Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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_Regex_String_Split - Fatal编程技术网

java在引号内拆分字符串

java在引号内拆分字符串,java,regex,string,split,Java,Regex,String,Split,有没有一种方法可以使用JavaString.split(regexp)对引号内的字符串进行拆分,而不获取引号? 我必须处理的字符串如下所示。我无法控制格式,字符串的数量是可变的: "strA" : "strB" : "strC" : "strD", "strE" : "strF" : "strG", 注:包含空格,每行单独处理。 我想得到的是一个包含所有字符串的数组 我可以使用replaceAll去掉引号、空格和逗号,然后在冒号上拆分: line = line.replaceAll(/(\"|

有没有一种方法可以使用Java
String.split(regexp)
对引号内的字符串进行拆分,而不获取引号? 我必须处理的字符串如下所示。我无法控制格式,字符串的数量是可变的:

"strA" : "strB" : "strC" : "strD",
"strE" : "strF" : "strG",
注:包含空格,每行单独处理。 我想得到的是一个包含所有字符串的数组

我可以使用
replaceAll
去掉引号、空格和逗号,然后在冒号上拆分:

line = line.replaceAll(/(\"|,\\s+)/,"");
usrArray = line.split(":");

但是我想用一个regexp来实现这一点。

这应该可以

usrArray = line.split("(\" : \")|(\",?)");
这首先查找
:“
。如果没有找到边缘情况,
”,
。如果还需要它来搜索换行符,请使用此正则表达式

usrArray = line.split("(\" : \")|(\",?\n?)");

看起来像一个JSON。您可以考虑只解析JSON字符串。向我们展示更多您正在解析的内容。似乎您试图解析的数据是JSON,并且存在用于该格式类型的解析器。这不是JSON,它实际上是一系列用冒号分隔的字符串,为了简单起见,我只包含了两个带有用户名/角色名的字符串。我已经更新了帖子,使其更加具体。那么line.split(“:”)有什么问题吗?然后对数组中的每一块进行修剪().replaceAll(“,”);?您可以使用line.split(“\\s+:\\s+”)但是它不能完全清理数组中第一个和最后一个项的碎片返回没有问题,或者我使用replace的方式没有问题,并在冒号上拆分。我想用一个正则表达式来完成它,以便它是一个操作,而不是两个操作(如果可能的话)。这非常接近!我仍然得到一个空字符串作为第一个元素返回数组中的t,但我可以解决这个问题。