我需要替换 $achieved$
它应该不区分大小写。因为有时候我们从服务器得到的字符串 $ACHIeved$
,因此它应该忽略区分大小写。我正在使用下面的代码。
stringWithoutFormating.replace(Constant.PROGRAM_DETAILS_ENTRY_CONTENT_FIELDS.achieved, String.valueOf(achieved));
我试过了 (?i)
也一样,但不起作用。
可以用regex完成吗?如果可以,regex应该是什么?
1条答案
按热度按时间dddzy1tm1#
首先,
replace
执行文本字符串替换,并且不接受正则表达式作为其第一个参数。你需要使用replaceFirst
或者replaceAll
. 接下来,$
是一个特殊的正则表达式字符(它匹配字符串的结尾),因此必须对其进行转义。你可以用Pattern.quote
为了这个。所以,你可以用在这里,
(?i)
将使搜索不区分大小写,Pattern.quote(Constant.PROGRAM_DETAILS_ENTRY_CONTENT_FIELDS.achieved)
将转向$achieved$
进入\$achieved\$
,然后进行替换。这个.replace("$", "\\$")
执行替换是必要的$
在替换中。