Java 에서 white space를 제거 하기 위해 보통 아래와 같은 방법을 쓸 수 있지만,
String str = "some string";
String result = str.replaceAll("\\W", "");
위의 구문은 정확하게 동작하지 않는다.
String str = " *dev = delay[j]; // some comment: welcome to C Programming world";
System.out.println(str);
String result = str.replaceAll("\\W", "");
System.out.println(result);
위와 같은 예제 소스를 수행하면 아래와 같은 결과를 얻을 수 있다.
*dev = delay[j]; // some comment: welcome to C Programming world
devdelayjsomecommentwelcometoCProgrammingworld
즉, *, // 와 같은 Regular Expression들의 키워드들이 String에 포함되었을 경우 재대로 white space들이 제거 되지 않는 현상이 발생한다.
보다 정확하게 동작을 시키려면 아래와 같은 코드를 작성해서 수행 해야 한다.
// method definition
String removeAllWhiteSpace(String str){
StringTokenizer st = new StringTokenizer(str.trim());
StringBuilder sb = new StringBuilder();
while(st.hasMoreTokens()){
sb.append(st.nextToken());
}
return sb.toString();
}
String result = removeAllWhiteSpace(str);
System.out.println(result);
결과는 아래와 같이 출력된다.
*dev=delay[j];//somecomment:welcometoCProgrammingworld
위와 같은 메소드를 수행시키면 String class의 replaceAll(...) 의 첫번째 인자인 Regular expression을 사용하지 않고 모든 white space를 제거할 수 있다.
'Programming > Java' 카테고리의 다른 글
XML parser using Java SAX library (Java SAX 이용하여 XML Parser 만들기) (0) | 2011.11.09 |
---|---|
Difference between StringBuilder and StringBuffer (StringBuilder 와 StringBuffer의 차이점) (0) | 2011.11.09 |
Java 로 구현한 DFS (Depth First Search) 알고리즘 (0) | 2011.11.09 |
Java 로 구현한 SHA-1 hash 암호화 알고리즘 (0) | 2011.11.09 |
Java Singleton Pattern (0) | 2011.11.09 |