본문 바로가기

Programming/Java

Java Remove all white spaces in String (문자열에서 모든 white space 제거하기)

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를 제거할 수 있다.