我有2个嵌套的HashMaps作为我想要解析的字符串。
我的字符串如下:
"20:[cost:431.14, Count:19, Tax:86.228"
因此我需要拆分" :[
"为了得到我的密钥20
,由于某种原因,我无法做到这一点。
我试过了:
myString.split(":[")
和myString.split("\\:[")
但似乎都不起作用。
任何人都可以在这里发现我的错误吗?
先谢谢
答案 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
如果密钥只是一个整数,您可以使用(\d+):\[
检查regex demo
答案 4 :(得分:1)
注意'['
字符是正则表达式中的特殊字符,因此您必须创建一个转义字符,如\\
str.split(":\\[");
,并记住该字符串是不可变的,所以如果你想使用它两次你必须像这样String[] spl =str.split(":\\[");
答案 5 :(得分:0)
如果你只需要String
中的密钥“20”,另一个解决方案就是将其子串以获得分隔符之前的部分。
String key = myString.substring(0, myString.indexOf(":["));