내 자바 코드에서 문자열 입력에 앞서 언급 한 특수 문자가 있거나 그 앞에 \
이 있어야하는 것과 같은 것을 원합니다.
특수 문자 집합은 {+, -, &&, ||, !, (,), {, },[, ], ^, "", ~, *, ?, :, \}
입니다. inputString.replaceAll(old,new)
을 사용해 보았습니다. 놀랍지 만 작동하지 않습니다. '오래된'과 '새로운'에 대한 적절한 값을 제공하고 있습니다.
특수 문자를 String 배열에 넣고 for 루프에 반복하여 문자열에 문자열이 있는지 확인합니다 (예 : input.replaceAll(":","\\:")
). 그러나 그것은 나에게 의도 된 결과를주지 못한다. 도와주세요.String, replaceAll이 실패 할 때 특수 문자를 이스케이프 특수 문자로 바꿉니다
String[] arr = { "+", "-", "&&", "||", "!", "(", ")", "{", "}",
"[", "]", "^", "\"", "~", "*", "?", ":", "\\", "AND", "OR" };
for (int i = 0; i < arr.length; i++) {
System.out.println("arr[" + i + "]>>>>>>>>>>>>>>>" + arr[i]);
System.out.println(search.contains((String) arr[i])
+ "---------->" + arr[i]);
if (search.contains((String) arr[i])) {
System.out.println("..index..."+search.indexOf((String) arr[i]));
String oldString = (String) arr[i];
System.out.println("check if it has old string"
+ search.contains(oldString));
String newString = new String("\\" + arr[i]);
System.out
.println("About to replace special chars....with..."
+ newString);
search = search.replaceAll(oldString, newString);
String newSearch = new String(search.replaceAll(arr[i],
newString));
System.out
.println("Search String after replaceAll is ------------->: "
+ newSearch);
System.out.println("--------------"
+ search.replaceAll(arr[i], newString)
+ "---------------" + search);
}
}