[英]How to replace brackets in strings
我有一个包含令牌的字符串列表。
令牌是:
{ARG:TOKEN_NAME}。
我还有令牌的哈希映射,其中key是令牌,value是我想用令牌代替的值。
当我使用“replaceAll”方法时,我收到错误:
java.util.regex.PatternSyntaxException:非法重复
我的代码是这样的:
myStr.replaceAll(valueFromHashMap , "X");
和valueFromHashMap包含{和}。
我把这个hashmap作为参数。
String.replaceAll()
适用于String.replaceAll()
。 {n,m}
通常在regexp中重复。
如果要匹配文字括号,请尝试使用\\\\{
和\\\\}
。
因此,用X
替换所有左括号都是这样的:
myString.replaceAll("\\{", "X");
请参阅此处以了解正则表达式(regexps)以及为什么{
和}
是使用regexp时必须转义的特殊字符。
正如其他人已经说过的那样, {
是模式中使用的特殊字符( }
)。 你必须逃避它以避免任何混淆。
手动转义这些可能是危险的(你可能会省略一个并使你的模式完全错误)和乏味(如果你有很多特殊字符)。 处理这个的最好方法是使用Pattern.quote()
相关问题:
资源:
replaceAll()
将正则表达式作为参数, {
是正则表达式中的特殊字符。 为了让正则表达式将其视为常规字符,它必须由\\
来转义,必须由另一个\\
再次转义,以便Java接受它。 所以你必须使用\\\\{
。
您可以使用带方括号的行中的.replaceAll()
删除大括号
String newString = originalString.replaceAll("[{}]", "X")
例如:newString =“ARG:token_name”
如果你想进一步将newString分隔为键和值,你可以使用.split()
String[] arrayString = newString.split(":")
使用arrayString,您可以将它用于带有.put()
, arrayString[0]
和arrayString[1]
HashMap
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.