Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法按“拆分”:[“在Java中”_Java_Split - Fatal编程技术网

无法按“拆分”:[“在Java中”

无法按“拆分”:[“在Java中”,java,split,Java,Split,我有两个嵌套的HashMaps作为一个字符串,我正试图解析它 我的字符串如下: "20:[cost:431.14, Count:19, Tax:86.228" 因此,我需要按“:[”进行拆分,以获取我的密钥,20,由于某些原因,我无法执行此操作 我试过: myString.split(“:[”)和myString.split(“\\:[”),但两者似乎都不起作用 有人能发现我这里出了什么问题吗 提前感谢您必须转义字符[,但不能转义字符:,如下所示: String str = "20:[cost

我有两个嵌套的HashMaps作为一个字符串,我正试图解析它

我的字符串如下:

"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
)时所期望的那样。