我需要从字符串中替换 $achieved$
,这应该是不敏感的。因为有时在服务器的字符串中会得到$ACHIeved$
,因此应该忽略案例敏感。我正在使用以下代码。
stringWithoutFormating.replace(Constant.PROGRAM_DETAILS_ENTRY_CONTENT_FIELDS.achieved, String.valueOf(achieved));
我也尝试过(?i)
,但它不起作用。
可以用正则表达式完成,如果是的话,应该是什么?
首先, replace
执行字面的字符串替换,并且不接受正则是其第一个参数。您需要使用replaceFirst
或replaceAll
。接下来,$
是一个特殊的正则char(与字符串的末端匹配),因此必须逃脱。您可以使用Pattern.quote
。因此,您可以使用
stringWithoutFormating = stringWithoutFormating.replaceAll("(?i)" + Pattern.quote(Constant.PROGRAM_DETAILS_ENTRY_CONTENT_FIELDS.achieved), String.valueOf(achieved).replace("$", "\$"));
在这里,(?i)
将使搜索案例不敏感,$achieved$
将将CC_11变成$achieved$
,然后将进行替换。在替换上执行的.replace("$", "\$")
对于逃避替换中的字面$
是必要的。