【发布时间】:2016-07-12 15:31:57
【问题描述】:
我有一个包含以下行的 csv 文件。如您所见,数字没有用双引号括起来。
String theLine = "Corp:Industrial","5Nearest",51.93000000,"10:21:29","","","","10:21:29","7/5/2016","PER PHONE CALL WITH SAP, CORRECTING "C","359/317 97 SMRD 96.961 MADV",""
我尝试阅读上面的行并使用 regEX 进行拆分
String[] tokens = theLine.split(",(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))");
这不会像我想要的那样在每个逗号处拆分。 “每个电话与 SAP,更正“C”,因为它有额外的,(逗号)和“(双引号)而搞砸了。有人可以帮我写一个正则表达式,它将转义一个额外的双引号和一个带有两个双引号的逗号。
我基本上想要:
"Corp:Industrial","5Nearest",51.93000000,"10:21:29","","","","10:21:29","7/5/2016","**PER PHONE CALL WITH SAP CORRECTING C**","359/317 97 SMRD 96.961 MADV",""
【问题讨论】:
-
使用edit 选项并将您的代码示例包装在
code block中(编辑器菜单中的{}图标)。这样*和\等所有字符都会被打印出来。 -
您可以修改生成该 CSV 行的源吗?由于您的引号不平衡/未转义,因此它无法正常工作。
-
如果您确定这些 orphan 引号从不在逗号附近,则可以轻松解决,否则了解每个字段的外观可能会有所帮助。
-
获取 CSV 解析器,而不是用错误的正则表达式重新发明轮子。