替换为忽略案例敏感



我需要从字符串中替换 $achieved$,这应该是不敏感的。因为有时在服务器的字符串中会得到$ACHIeved$,因此应该忽略案例敏感。我正在使用以下代码。

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

我也尝试过(?i),但它不起作用。
可以用正则表达式完成,如果是的话,应该是什么?

首先, replace执行字面的字符串替换,并且不接受正则是其第一个参数。您需要使用replaceFirstreplaceAll。接下来,$是一个特殊的正则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("$", "\$")对于逃避替换中的字面$是必要的。

最新更新