Java 包含双引号的字符串拆分问题

Java 包含双引号的字符串拆分问题,java,Java,我有一个以下格式的字符串 "test","2, High Street, 50100 Eastleigh",",UK" 当我使用下面的代码拆分上面的字符串时 String[] lineArr = line.split("\",", -1) 实际输出为: "test "2, High Street, 50100 Eastleigh UK" test 2, High Street, 50100 Eastleigh ,UK 预期输出为: "test "2, High Street, 5010

我有一个以下格式的字符串

"test","2, High Street, 50100 Eastleigh",",UK"
当我使用下面的代码拆分上面的字符串时

String[] lineArr = line.split("\",", -1)
实际输出为:

"test
"2, High Street, 50100 Eastleigh

UK"
test
2, High Street, 50100 Eastleigh
,UK
预期输出为:

"test
"2, High Street, 50100 Eastleigh

UK"
test
2, High Street, 50100 Eastleigh
,UK
如何处理此问题?

拆分(字符串匹配,整数限制)

如果“限制”为非正,则图案将被应用尽可能多的次数,并且阵列可以具有任意长度。如果limit为零,则将尽可能多次应用该模式,数组可以有任何长度,并且将丢弃尾随的空字符串

“测试”,“高街2号,东利50100”,“

在这里,当您应用
lineArr.split(“\”,“,-1)
,limit为负数时,它也将返回尾随的空字符串

测试
“2,高街,50100 Eastleigh
空字符串”“
,因此将
3
作为长度

但是,如果使用
lineArr.split(“\”,“,”,0)
lineArr.split(“\”,”)
则不会返回尾随的空字符串。因此,您将获得
2
作为长度

为了消除中间的空字符串,我建议您使用
lineArr.split(“\”,”)这是
拆分(字符串匹配)
上述
拆分方法的版本

根据您的输出,您应该调用
lineArr.split(“\”,\”),这将给出结果输出。

拆分(字符串匹配,整数限制)

如果“限制”为非正,则图案将被应用尽可能多的次数,并且阵列可以具有任意长度。如果limit为零,则将尽可能多次应用该模式,数组可以有任何长度,并且将丢弃尾随的空字符串

“测试”,“高街2号,东利50100”,“

在这里,当您应用
lineArr.split(“\”,“,-1)
,limit为负数时,它也将返回尾随的空字符串

测试
“2,高街,50100 Eastleigh
空字符串”“
,因此将
3
作为长度

但是,如果使用
lineArr.split(“\”,“,”,0)
lineArr.split(“\”,”)
则不会返回尾随的空字符串。因此,您将获得
2
作为长度

为了消除中间的空字符串,我建议您使用
lineArr.split(“\”,”)这是
拆分(字符串匹配)
上述
拆分方法的版本


根据您的输出,您应该调用
lineArr.split(“\”,\”),这将给出您的结果输出。

您可以忽略第一个和最后一个
,并在
”、“
上拆分,如下所示:

String[] lineArr = line.substring(1,line.length()-1).split("\",\"");

我相信还有更高效、更优雅的解决方案,但这应该是一个简单的代码调整,只需一行代码。

您可以忽略第一个和最后一个
,然后在
”、“
上拆分,如下所示:

String[] lineArr = line.substring(1,line.length()-1).split("\",\"");

我相信还有更高效、更优雅的解决方案,但这应该是一个简单的代码调整,只需一行程序。

如果这是您的预期输出。。。您得到的是什么输出?我确定如果在列值之间的“和”之前有转义字符,我可以处理它。如果没有转义字符,我如何处理它?@Shankar不应该是相反的吗?->“,\ \”
line.split(\”,”)
将为您提供
2
如果您从用户处获取输入,而如果您使用字符串,则必须在中间转义双引号。您应该提供一个示例来解释您所拥有的以及您对特定数据集(以及数据源)的期望如果这是您期望的输出…您得到的输出是什么?我确定如果在列值之间的“和”之前有转义字符,我可以处理它。如果没有转义符,我该如何处理这个问题?@Shankar不应该反过来吗?->“,\”
line.split(“\”,”)
将为您提供
2
如果您从用户处获取输入,而如果您使用字符串,则必须在两者之间转义双引号。您应该提供一个示例来解释您所拥有的内容以及您对一组特定数据(以及数据源)的期望。更新了我的答案,请您也查看一下。:-)显然,在这种情况下,负极限和零极限都会给出相同的结果,因此我推荐了其他版本的方法更新了我的答案,请大家也研究一下。:-)显然,在这种情况下,负数和零限制都会给出相同的结果,因此我推荐了其他版本的方法。我刚刚注意到逗号的位置,进行更新后,我得到了精确解……我刚刚注意到逗号的位置,进行更新后,我得到了精确解。。。