2010. 7. 26. 19:19


회사 프로젝트 코드에서 공백이 포함된 문자열을 공백을 제거할 로직을 추가할 일이 있어서
아래와 같은 방식으로 수정을 하였습니다.

 
1 String str = "Vicki Yi";
2   
3 System.out.println(str + " : " + str.replaceAll(" ", ""));



허나 결과는...

Vicki Yi : Vicki Yi


정규식에서 공백은 정확하게 공백으로 인식을 못하는 것 같았습니다.
Pattern JavaDoc 에서 내용을 확인하였습니다.
http://java.sun.com/javase/6/docs/api/java/util/regex/Pattern.html

POSIX character classes (US-ASCII only)
\p{Lower} A lower-case alphabetic character: [a-z]
\p{Upper} An upper-case alphabetic character:[A-Z]
\p{ASCII} All ASCII:[\x00-\x7F]
\p{Alpha} An alphabetic character:[\p{Lower}\p{Upper}]
\p{Digit} A decimal digit: [0-9]
\p{Alnum} An alphanumeric character:[\p{Alpha}\p{Digit}]
\p{Punct} Punctuation: One of !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Graph} A visible character: [\p{Alnum}\p{Punct}]
\p{Print} A printable character: [\p{Graph}\x20]
\p{Blank} A space or a tab: [ \t]
\p{Cntrl} A control character: [\x00-\x1F\x7F]
\p{XDigit} A hexadecimal digit: [0-9a-fA-F]
\p{Space} A whitespace character: [ \t\n\x0B\f\r]


그래서 아래와 같이 수정하였습니다.

 
1 String str = "Vicki Yi";
2   
3 System.out.println(str + " : " + str.replaceAll("\\p{Space}", ""));



결과는~~~ 원하는 결과가 나왔습니다.

Vicki Yi : VickiYi



정규식을 안쓰면 indexOf() 와 replace 를 while 문으로 돌려서 처리를 해야 하기에 역시 정규식이 깔끔한 것 같습니다.

출저 -  http://vicki.tistory.com/583

'JAVA 6.0 > Fundamentals' 카테고리의 다른 글

BufferedWriter 파일에 데이터 삽입  (0) 2009.11.15
BufferedReader 파일 읽어오기  (0) 2009.11.15
Posted by TIMEC