替换为忽略区分大小写

时间:2017-09-04 12:58:39

标签: java android regex string-formatting

我需要从字符串中替换{ "rules": { ".read": "auth != null", ".write": "auth != null" } } ,它应该不区分大小写。因为有时在服务器的字符串中我们得到$achieved$,因此它应该忽略区分大小写。我正在使用下面的代码。

$ACHIeved$

我也试过stringWithoutFormating.replace(Constant.PROGRAM_DETAILS_ENTRY_CONTENT_FIELDS.achieved, String.valueOf(achieved)); ,但它不起作用。
可以用正则表达式完成,如果是的话应该是正则表达式吗?

1 个答案:

答案 0 :(得分:0)

首先,replace执行文字字符串替换,并且不接受正则表达式作为其第一个参数。您需要使用replaceFirstreplaceAll。接下来,$是一个特殊的正则表达式字符(它匹配字符串的结尾),因此必须进行转义。您可以使用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("$", "\\$")对于替换替换文字$是必要的。