基于逗号的分隔正则表达式,忽略引号内的逗号

在我的一个项目中,我不得不处理逗号分隔文件(CSV)。我必须基于逗号来拆分数据,,而忽略引号内的逗号(即""),因此我使用了另一个堆栈溢出问题(Java:拆分逗号分隔的字符串但忽略了引号中的逗号)中提到的表达式。一切工作都很好,直到最近我才注意到它不适用于下面提到的一种特定情况。

我需要在逗号上拆分的数据字符串为:

20Y-62-27412,20Y6227412NK,BRACKET,101H,00D505060,H664374,06/25/2013,1,,

以我的理解为基础

String[] rowData = str.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");

拆分后的数据应返回一个大小为10的数组,该数组的后两个索引包含一个空字符串,相反,我得到的是大小为8的数组,即后两个逗号未视为拆分器。我在应用程序中的多个地方都使用了此表达式,所以我不想从中回溯。任何帮助,将不胜感激。谢谢

回答:

您需要使用split(java.lang.String,int)

方法

您的代码将如下所示:

String str = "20Y-62-27412,20Y6227412NK,BRACKET,101H,00D505060,H664374,06/25/2013,1,,";

String[] rowData = str.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)", -1);

以上是 基于逗号的分隔正则表达式,忽略引号内的逗号 的全部内容, 来源链接: utcz.com/qa/422742.html

回到顶部