2017-09-04 1 views
0

문자열에서 $achieved$을 바꿔야하며 대소 문자를 구분해야합니다. 때때로 서버의 문자열에서 $ACHIeved$을 얻으므로 대소 문자를 무시해야합니다. 아래 코드를 사용하고 있습니다.대소 문자 무시로 바꾸기

stringWithoutFormating.replace(Constant.PROGRAM_DETAILS_ENTRY_CONTENT_FIELDS.achieved, String.valueOf(achieved)); 

나는 (?i)도 시도했지만 작동하지 않습니다.
정규식으로 할 수 있습니까? 그렇다면 정규식은 무엇입니까?

답변

0

우선 replace은 리터럴 문자열 교체를 수행하며 첫 번째 인수로 정규식을 허용하지 않습니다. replaceFirst 또는 replaceAll을 사용해야합니다. 다음으로 $은 특수한 정규 표현식 char (문자열의 끝과 일치 함)이므로 이스케이프해야합니다. 당신은 Pattern.quote을 사용할 수 있습니다. 그래서, 당신은 문자를 구분하여 검색 케이스를 만들 것입니다 여기에

stringWithoutFormating = stringWithoutFormating.replaceAll("(?i)" + Pattern.quote(Constant.PROGRAM_DETAILS_ENTRY_CONTENT_FIELDS.achieved), String.valueOf(achieved).replace("$", "\\$")); 

, (?i)를 사용할 수 있습니다, Pattern.quote(Constant.PROGRAM_DETAILS_ENTRY_CONTENT_FIELDS.achieved)\$achieved\$$achieved$ 바뀔 것이다, 다음 교체가 일어날 것이다. 교체시 .replace("$", "\\$")을 수행해야 문자 대체 $을 피할 수 있습니다.

관련 문제