繁体   English   中英

替换为忽略大小写

[英]Replace with ignore case sensitive

我需要从字符串中替换$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)将使搜索不区分大小写, Pattern.quote(Constant.PROGRAM_DETAILS_ENTRY_CONTENT_FIELDS.achieved)会将$achieved$变成\\$achieved\\$ ,然后替换将发生。 替换执行的.replace("$", "\\\\$")是必需的,以便在替换中转义文字$

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM