본문 바로가기

app/java

java replace / replaceFirst / replaceAll $ 주의 할점.

일반적으로 ibatis 에서는 숫자형은 # 문자열은 $로 표기한다.

그래서 파라미터를 넣고 변환하는 과정의 프로그램을 만들다가 알아낸건데.

java의 replace 관련 함수들은  (replaceFirst  / replaceAll  포함) 정규표현식을 제공한다.

문제는 $ 표기는 정규표현식에서 문자열의 가장 끝을 나타낸다.

이는 replace에서 $를 기준으로 문자열을 치환한다면 문자열의 가장 끝으로 문자가 붙어 버린다.

ex)   String str = "$aa  ";
        str =     str. replace("$" , "aaa"); 
       이라고 할때 str은 "aaaaa  " 이 아닌 "$aa  aaa" 이렇게 나오게 된다. 

결국 $를 replace 함수  (replaceFirst  / replaceAll  포함) 의 첫번째 파라미터 oldchar로 설정할땐
"$"-> "\\$" 로 해야 원하는 결과가 나올것이다.

- -_-이것때문에 두시간 날림....췟.