无法拆分":["在Java中

时间:2017-10-24 09:08:08

标签: java split

我有2个嵌套的HashMaps作为我想要解析的字符串。

我的字符串如下:

"20:[cost:431.14, Count:19, Tax:86.228"

因此我需要拆分" :["为了得到我的密钥20,由于某种原因,我无法做到这一点。

我试过了:

myString.split(":[")myString.split("\\:[")但似乎都不起作用。

任何人都可以在这里发现我的错误吗?

先谢谢

6 个答案:

答案 0 :(得分:10)

你必须逃避角色[,而不是如下所示的角色:

String str = "20:[cost:431.14, Count:19, Tax:86.228";
String[] spl = str.split(":\\[");

答案 1 :(得分:6)

String.split使用正则表达式。

  

围绕给定正则表达式的匹配拆分此字符串。

你需要逃避[,因为这是一个"保留"常规表达中的字符,而不是:

myString.split(":\\[")

如果您只想要第一个单元格

,那么您不能/应该设置限制
myString.split(":\\[", 2);

这将返回一个2个单元格的数组,因此在第一次出现之后,它不需要读取String的其余部分。 (这不是必要的,但很高兴知道)。

答案 2 :(得分:3)

使用Pattern.quote自动转义字符串

String string = "20:[cost:431.14, Count:19, Tax:86.228";
String[] split = string.split(Pattern.quote(":["));

答案 3 :(得分:2)

另一种解决方案:

  

因此我需要拆分":[" 为了得到我的密钥,20 。对于   我无法做到这一点的原因。

在这种情况下,您可以使用replaceAll和一些正则表达式来获取此输入,以便您可以使用:

String str = "20:[cost:431.14, :[Count:19, Tax:86.228";
String result = str.replaceAll("(.*?):\\[.*", "$1");// output 20

regex demo

如果密钥只是一个整数,您可以使用(\d+):\[检查regex demo

答案 4 :(得分:1)

注意'['字符是正则表达式中的特殊字符,因此您必须创建一个转义字符,如\\ str.split(":\\[");,并记住该字符串是不可变的,所以如果你想使用它两次你必须像这样String[] spl =str.split(":\\[");

重新分配它

答案 5 :(得分:0)

如果你只需要String中的密钥“20”,另一个解决方案就是将其子串以获得分隔符之前的部分。

String key = myString.substring(0, myString.indexOf(":["));