프로그램
자바에서 replaceAll 쓸 때, 특수문자 치환법
(주)CKBcorp.,
2014. 8. 25. 05:30
반응형
출처 : http://mean79.tistory.com/60 <- 여기 가서 보면 설명 잘 되어 있다.
전에 String.replaceAll() 쓰는데, 계속 에러나길레 둘려쳐서 구현한 적이 있는데, 이것 때문이었구만.
자바는 String 의 replace 함수의 역사( ? ) 때문에, String.replaceAll( ) 은 String.replace( ) 과 달리 인자값으로 "정규식" 을 받는다.
즉, String.replaceAll( 변경전문자, 변경후문자 ) 으로 사용할 때에, "변경전문자" 가 단순히 문자열이 아니라, 정규식이라는 것.
물론 나같은 사람은 그딴거 없고 그냥 문자열 치환하는데만 썼는데.... 그러다보니 가끔식 뻑 나더란 것.
알고보니까 저 "정규식" 처리때문에, 정규식에서 쓰이는 특수문자들은 치환 문자열로 넣으면 에러가 나는 것이렸다....
예를 들면
String.replaceAll( "가나", "거너" )
는 문제없는데,
String.replaceAll( "가*나", "거-너" )
는 뻑난다는 거다.
아래의 내용은 http://mean79.tistory.com/60 에서 퍼옴. 문자열에 따라 대응해 주면 되겠다.
예를 들어 String.replaceAll( "가*나", "거-너" ) 라면,
String.replaceAll( "가*나", "거-너" ) -> String.replaceAll( "가[*]나", "거-너" )
뭐 이런식으로 써주면 됨. ( 아래부터는 퍼온것. )
-------------------------------------
1. []으로 싸주면 문자자체로 인식하는 것들.
* ⇒ [*]
+ ⇒ [+]
$ ⇒ [$]
| ⇒ [|]
! # % & @ ` : ; - . < > , ~ '
2. \\를 붙여줘야 하는 것들.
( ⇒ \\(
) ⇒ \\)
{ ⇒ \\{
} ⇒ \\}
^ ⇒ \\^
[ ⇒ \\[
] ⇒ \\]
3. 자바의 특수문자는 \을 쓴다.
" ⇒ \"
반응형