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
如果您从用户处获取输入,而如果您使用字符串,则必须在两者之间转义双引号。您应该提供一个示例来解释您所拥有的内容以及您对一组特定数据(以及数据源)的期望。更新了我的答案,请您也查看一下。:-)显然,在这种情况下,负极限和零极限都会给出相同的结果,因此我推荐了其他版本的方法更新了我的答案,请大家也研究一下。:-)显然,在这种情况下,负数和零限制都会给出相同的结果,因此我推荐了其他版本的方法。我刚刚注意到逗号的位置,进行更新后,我得到了精确解……我刚刚注意到逗号的位置,进行更新后,我得到了精确解。。。