썩구노트
자바에서 replaceAll 쓸 때, 특수문자 치환법 본문
출처 : 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. 자바의 특수문자는 \을 쓴다.
" ⇒ \"
'JAVA' 카테고리의 다른 글
자바 날짜/시간 계산 예제 코드 :: Java Date Code Snippet (0) | 2017.01.04 |
---|---|
AES256 암호화 (0) | 2016.12.28 |
[Java] 자바 리스트(List,ArrayList) 이용하는 방법 (0) | 2016.12.07 |
[Java] 자바 디버깅 방법, 이클립스를 이용해서 자바 디버깅 하기 (0) | 2016.12.07 |
Eclipse 자주 쓰는 단축키 (0) | 2016.10.08 |