我需要从字符串中替换{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
,它应该不区分大小写。因为有时在服务器的字符串中我们得到$achieved$
,因此它应该忽略区分大小写。我正在使用下面的代码。
$ACHIeved$
我也试过stringWithoutFormating.replace(Constant.PROGRAM_DETAILS_ENTRY_CONTENT_FIELDS.achieved, String.valueOf(achieved));
,但它不起作用。
可以用正则表达式完成,如果是的话应该是正则表达式吗?
答案 0 :(得分:0)
首先,replace
执行文字字符串替换,并且不接受正则表达式作为其第一个参数。您需要使用replaceFirst
或replaceAll
。接下来,$
是一个特殊的正则表达式字符(它匹配字符串的结尾),因此必须进行转义。您可以使用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("$", "\\$")
对于替换替换文字$
是必要的。