public static void main(String ... args){
String input = "Header1,Header2,Header3\n" +
"\"\",,\"L1C3\"";
CsvParserSettings settings = new CsvParserSettings(); //many options here, check the tutorial.
settings.setEmptyValue("I'm empty"); //value to use when the parser finds "". Set to "" to get an empty String.
settings.setNullValue("I'm null"); //value to use when the parser finds a null value (i.e. ,,).
CsvParser parser = new CsvParser(settings);
List<String[]> allRows = parser.parseAll(new StringReader(input));
for(String[] row : allRows){
System.out.println(Arrays.toString(row));
}
}
4条答案
按热度按时间svujldwt1#
我使用了这种格式:
其中2种配置:
1.ignore space-修剪两边的任何值,如果它是所有空格,它将被修剪为空空格
1.null string-将空格视为null
下面是一个示例用法:
vktxenjb2#
我认为uniVocity-parsers是唯一一个允许你区分空字符串和null的库(* 我知道这不能直接解决你使用Apache Commons CSV的问题,但至少有一种方法可以得到你需要的东西 *)。
具体操作方法如下:
这将产生以下输出:
uniVocity-parsers也比Apache Commons CSV快3倍,并且具有更多功能。
声明:我是这个图书馆的作者。它是开源和免费的(Apache V2.0许可证)。
mec1mxoz3#
最后,我没有找到一个很好的解决方案来返回空与Apache Commons CSV库。我切换到OpenCSV 3.6,这里是我使用的代码,我也发布在另一个线程上。感谢所有推荐OpenCSV的人。
CSVReaderBuilder为此提供了withFieldAsclusion()。
bd1hkmkf4#
在Apache commons csv 1.2中,我们可以使用
CSVFormat
类方法withNullString()
将空字符串转换为NULL
。这里空字符串可以是""
或"N/A"
或"Nill"
根据您的要求。这将为所讨论的给定记录提供给予
NULL, NULL, L1C3
。注意:空记录会自动转换为空字符串,最终转换为
NULL
值。