替换为忽略区分大小写

unguejic  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(427)

我需要替换 $achieved$ 它应该不区分大小写。因为有时候我们从服务器得到的字符串 $ACHIeved$ ,因此它应该忽略区分大小写。我正在使用下面的代码。

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

我试过了 (?i) 也一样,但不起作用。
可以用regex完成吗?如果可以,regex应该是什么?

dddzy1tm

dddzy1tm1#

首先, 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("$", "\\$") 执行替换是必要的 $ 在替换中。

相关问题