【发布时间】:2015-03-25 14:01:56
【问题描述】:
我有一个 csv 字符串,其中包含五个字段(3 个必需字段和 2 个可选字段)。可选字段位于位置 3 和 5。 我有一个正则表达式模式来识别双引号中的字符串
private static final String TEXT_IN_DBL_QUOTES_REGEX="\"([^\"]*)\"";
private static final String rowData="\"Field1\", \"Field2\", , \"Field4\", ";
public static void main(String[] args){
List<String> fields = Lists.newArrayList();
Pattern regex = Pattern.compile(TEXT_IN_DBL_QUOTES_REGEX);
Matcher matcher = regex.matcher(rowData);
while(matcher.find()){
fields.add(matcher.group(1));
}
return fields;
}
My expected result is an array list containing
Field1, Field2, null, Field4, null
but the above is returning
Field1, Field2, Field4
如何调整上述代码以获得所需的结果?
【问题讨论】:
-
使用上面的正则表达式仍然给了我下面的 "Domain Name","13test.com", ,"USer5", ==>[Domain Name, 13test.com, USer5]
-
为什么不使用完全支持引用字段的 CSV 阅读器? opencsv.sourceforge.net
-
在架构上我不能使用这个 api 调用,直到 api 被批准在我们的环境中使用,而且分隔符“,”有歧义,因为我有逗号分隔的文本作为字段的值。感谢您的回复...
-
CSV-Lib 也可以处理包含 "," 的字符串。