replaceAll함수에서 예상치 못한 아래와 같은 오류가 발생했다.
Illegal group reference
원인을 모르던 중..API 를 확인한 결과..
예상외로 replaceAll 함수는 첫번째 매개변수를 두번째 매개변수로 모두 바꿔준다가 아니라,
첫번째 매개변수의 정규식에 해당하는 스트링을 두번째 매개변수로 바꿔준다 였다.
그리고 친절하게 대처 할 수 있는 방법도 알려줬다.
java.util.regex.Matcher.quoteReplacement(String) 이라는 함수를 이용하면,replaceAll 함수에 적용할 수 있는 String을 리턴한다.
나의 경우에는 $라는 문자가 있어서 문제가 되었는데, 이함수를 이용해 간단하게 해결했다.
그리고 이와는 별개로 다른 방법도 찾게 되었다.
직접 해당 $ 문자를 변경하는 방법인데 두방법 모두 잘 작동하였다.
예제1
public static void main (String args[]){
String main_string = "###UserPassword###1###UserPassword###2###UserPassword###3###UserPassword###4###UserPassword###5###UserPassword###6###UserPassword###";
String test_string = "tester123`~!@#$%^&*()-_=+[{]}|;:,<.>/?'\"";
System.out.println("변경 전 test_string" + test_string);
test_string = java.util.regex.Matcher.quoteReplacement(test_string);
System.out.println("변경 후 test_string" + test_string);
main_string = main_string.replaceAll("###UserPassword###", test_string);
System.out.println("replaceAll 결과 :"+main_string);
return;
}
예제2
public static void main (String args[]){
String main_string = "###UserPassword###1###UserPassword###2###UserPassword###3###UserPassword###4###UserPassword###5###UserPassword###6###UserPassword###";
String test_string = "tester123`~!@#$%^&*()-_=+[{]}|;:,<.>/?'\"";
System.out.println("변경 전 test_string" + test_string);
test_string = test_string.replaceAll("[$]", "\\\\\\$");
System.out.println("변경 후 test_string" + test_string);
main_string = main_string.replaceAll("###UserPassword###", test_string);
System.out.println("replaceAll 결과 :"+main_string);
return;
}
출력값
변경 전 test_stringtester123`~!@#$%^&*()-_=+[{]}|;:,<.>/?'"
변경 후 test_stringtester123`~!@#\$%^&*()-_=+[{]}|;:,<.>/?'"
replaceAll 결과 :tester123`~!@#$%^&*()-_=+[{]}|;:,<.>/?'"1tester123`~!@#$%^&*()-_=+[{]}|;:,<.>/?'"2tester123`~!@#$%^&*()-_=+[{]}|;:,<.>/?'"3tester123`~!@#$%^&*()-_=+[{]}|;:,<.>/?'"4tester123`~!@#$%^&*()-_=+[{]}|;:,<.>/?'"5tester123`~!@#$%^&*()-_=+[{]}|;:,<.>/?'"6tester123`~!@#$%^&*()-_=+[{]}|;:,<.>/?'"
둘다 결과값은 같았다.
'Java' 카테고리의 다른 글
Preparestatement CANNOT order by (0) | 2014.05.26 |
---|---|
자바 default charset 에 관하여 (0) | 2014.05.07 |
JAVA Encoding 과 Decoding에 대한 정리 (0) | 2013.11.14 |
HttpURLConnection setTimeout 적용 안될때, 안된다고 착각 할 때 (2) | 2013.11.07 |
dbcp Connection 자동 관리 -1.자동 누수 관리 (0) | 2013.11.07 |