我有一个以下格式的csv文件.
H,"TestItems_20100107.csv",07/01/2010,20:00:00,"TT1198","MOBb","AMD",NEW,,
Run Code Online (Sandbox Code Playgroud)
我需要split命令忽略双引号内的逗号.所以我在之前的帖子中使用了下面的split命令.粘贴我使用此命令的URL
String items[] = line.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");
System.out.println("items.length"+items.length);
Run Code Online (Sandbox Code Playgroud)
当我运行此CSV数据时,我将items.length打印为8."NEW"之后的行尾的最后两个逗号将被忽略.我希望split命令能够获取这些逗号,然后将长度返回为10.如果它在最后,则不会拾取空逗号,但是如果它位于字符串的中间,它会将其拾取.不确定我需要在split命令中修改什么来解决此问题.同样在csv文件中可以重复文本字段内容中的双引号(例如"此帐户是""大""一")
正则表达式没有错.问题是拆分在最后丢弃空匹配:
此方法的工作方式就像调用带有给定表达式和limit参数为零的双参数split方法一样.因此,结尾的空字符串不包含在结果数组中.
解决方法是提供一个大于CSV文件中所需列数的参数:
String[] tokens = line.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)", 99);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5025 次 |
| 最近记录: |