我在java中有以下几行:
1234,"Calle Jaime III, 34", 67,3,U
1235,Avenida Los Algodones, 12,1,L
1236,"Calle Principal""31234", 46,3,H
1237,"Calle Alfonso X,22", 65,2,J
我想为角色执行拆分
,
但正如您在示例中看到的那样,地址有引号,所以当带引号的字段内有逗号时,拆分是错误的。
我尝试得到以下信息:
1234 Calle Jaime III 34 67 3 U
1235 Avenida Los Algodones 12 1 L
1236 Calle Principal 31234 46 3 H
1237 Calle Alfonso X 22 65 2 J
我在以下答案中找到了解决您关于 SO 的英文问题的方法
它使用以下正则表达式,仅当逗号前面有零个或偶数个引号时才对逗号进行拆分
这是一个小的java代码来测试这个表达式
在屏幕上显示以下内容:
另一方面,我已经使用您放在名为https://regex101.com的页面上的数据测试了正则表达式,它可以正常工作,如您在下一页中看到的那样
如果您还想删除引号和逗号,您可以执行以下操作:
使其看起来与您想要获取的数据完全一样。
如果您拥有的模式正是这些模式,您可以在每条记录中使用 replaceAll(" , ", " ") 执行此操作,您将只删除示例第一种情况的拆分或 StringTokenizer 的“打扰”逗号,因为其他逗号不以空格分隔。然后你像往常一样进行拆分或 StringTokenizer,最后使用新的 replaceAll("\"", "") 删除所有引号。在每条记录上重复此过程应该将其保留为预期结果。如果您有更多模式,请将所有这些例子,我们一直在思考......