如何替换字符串中的括号

omr*_*rid 2 java string design-patterns

我有一个包含令牌的字符串列表.
令牌是:

{ARG:TOKEN_NAME}.

我还有令牌的哈希映射,其中key是令牌,value是我想用令牌代替的值.

当我使用"replaceAll"方法时,我收到错误:

java.util.regex.PatternSyntaxException:非法重复

我的代码是这样的:

myStr.replaceAll(valueFromHashMap , "X"); 
Run Code Online (Sandbox Code Playgroud)

和valueFromHashMap包含{和}.

我把这个hashmap作为参数.

Joh*_*iss 6

String.replaceAll()适用于正则表达式.{n,m}通常在regexp中重复.

尝试使用\\{,\\}如果你想匹配文字括号.

因此,通过以下X方式替换所有左括号:

myString.replaceAll("\\{", "X");
Run Code Online (Sandbox Code Playgroud)

请参阅此处以了解正则表达式(regexps)以及为什么{和使用正则表达式}时必须转义的特殊字符.


Col*_*ert 5

正如其他人已经说过的那样,{也是模式中使用的特殊字符(}也是).你必须逃避它以避免任何混淆.

手动转义这些可能是危险的(你可能会省略一个并使你的模式完全错误)和乏味(如果你有很多特殊字符).处理这个的最好方法是使用Pattern.quote()


相关问题:

资源: