如何替换字符串括号

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

{ARG:TOKEN_NAME}。

我也有记号的哈希映射,其中key是标记和价值是我想替换与令牌值。

当我用“的replaceAll”的方法,我得到的错误:

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

我的代码是这样的:

myStr.replaceAll(valueFromHashMap , "X");

和valueFromHashMap包含{和}。

我得到此HashMap作为参数。

--------------解决方案-------------

前面已经说了别人, {是在模式中使用特殊字符( }太)。 你要逃避它,以避免任何混淆。

逃离那些手动可能是危险的(可能省略一个,让你去的模式完全错误的)和繁琐的(如果你有很多的特殊字符)。 对付这一点,最好的方法是使用Pattern.quote()



相关的问题:

  • 如何逃脱模式编译方括号
  • 如何逃脱在Java中的正则表达式的文本

资源:

  • Oracle.com - JavaSE的教程 - 正则表达式

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

尝试使用\\{\\}如果要匹配字面上的括号内。

所以更换所有打开支架X这样工作:

myString.replaceAll("\\{", "X");

看到这里阅读有关正则表达式(正则表达式),为什么{}是具有使用正则表达式时,转义特殊字符。

replaceAll()接受一个正则表达式作为参数, {是正则表达式中的特殊字符。 为了使正则表达式来把它当作一个普通角色,必须由转义\ ,它必须再次被另一个转义\为了Java的接受它。 所以,你必须使用\\{

您可以删除与大括号.replaceAll()在方括号一行

String newString = originalString.replaceAll("[{}]", "X")

例如:newString =“ARG:TOKEN_NAME”

如果你想进一步分离newString关键和价值,你可以使用.split()

String[] arrayString = newString.split(":")

随着arrayString,你可以使用它与您的HashMap .put() arrayString[0]arrayString[1]

分类:java的 时间:2015-03-15 人气:0
本文关键词: 设计模式,字符串,JAVA
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.333 (s). 10 q(s)