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 문으로 돌려서 처리를 해야 하기에 역시 정규식이 깔끔한 것 같습니다.
'JAVA 6.0 > Fundamentals' 카테고리의 다른 글
BufferedWriter 파일에 데이터 삽입 (0) | 2009.11.15 |
---|---|
BufferedReader 파일 읽어오기 (0) | 2009.11.15 |