无法按“拆分”:[“在Java中”
我有两个嵌套的HashMaps作为一个字符串,我正试图解析它 我的字符串如下:无法按“拆分”:[“在Java中”,java,split,Java,Split,我有两个嵌套的HashMaps作为一个字符串,我正试图解析它 我的字符串如下: "20:[cost:431.14, Count:19, Tax:86.228" 因此,我需要按“:[”进行拆分,以获取我的密钥,20,由于某些原因,我无法执行此操作 我试过: myString.split(“:[”)和myString.split(“\\:[”),但两者似乎都不起作用 有人能发现我这里出了什么问题吗 提前感谢您必须转义字符[,但不能转义字符:,如下所示: String str = "20:[cost
"20:[cost:431.14, Count:19, Tax:86.228"
因此,我需要按“:[
”进行拆分,以获取我的密钥,20
,由于某些原因,我无法执行此操作
我试过:
myString.split(“:[”)
和myString.split(“\\:[”
),但两者似乎都不起作用
有人能发现我这里出了什么问题吗
提前感谢您必须转义字符
[
,但不能转义字符:
,如下所示:
String str = "20:[cost:431.14, Count:19, Tax:86.228";
String[] spl = str.split(":\\[");
使用正则表达式
围绕给定正则表达式的匹配项拆分此字符串
您需要转义[
,因为这是常规表达式中的“保留”字符,而不是:
myString.split(":\\[")
如果您只需要第一个单元格,则不应设置限制
myString.split(":\\[", 2);
这将返回一个包含2个单元格的数组,因此在第一次出现后,它不需要读取字符串的其余部分(这不是必需的,但很好知道)。另一种解决方案:
因此,我需要按“:[”拆分以获取我的密钥,20
因为某种原因我不能这样做
在这种情况下,您可以使用一些正则表达式来获取此输入,以便使用:
String str = "20:[cost:431.14, :[Count:19, Tax:86.228";
String result = str.replaceAll("(.*?):\\[.*", "$1");// output 20
如果键只是一个整数,则可以使用(\d+):\[
选中自动转义字符串
String string = "20:[cost:431.14, Count:19, Tax:86.228";
String[] split = string.split(Pattern.quote(":["));
请注意,“[”
字符是正则表达式中的特殊字符,因此您必须创建一个转义字符,如\\
str.split(“:\\[”);
并记住该字符串是不可变的,因此如果要使用它两次,则必须使用类似于字符串[]spl=str.split(:\[”)的split重新分配它如果您只需要字符串中的键“20”
,另一种解决方案是将其子串,以获得分隔符之前的部分
String key = myString.substring(0, myString.indexOf(":["));
拆分使用正则表达式,<代码> >代码>应该是转义的,而不是<代码>:你能详细说明为什么我们需要跳过[首先] yAy吗?很清楚,因为<代码> [<代码> ]用来定义正则表达式中的字符类的开头,并且拆分使用正则表达式,所以必须逃离它来考虑<代码>。[
作为文本字符检查,这里应该提到的是,每个字符都有两个字符:[
和\。这就是为什么完整的转义序列是\[/code>,而不仅仅是\[
,就像人们在使用常见转义序列(如\n
)时所期望的那样。