如何区分空字符串和空与OpenCSV



这是我的代码:

CSVReader reader = new CSVReader(isReader);
while ((col = reader.readNext()) != null) {
   String c1 = col[1];
}

这是我的CSV文件

"a","","c"
"1",,"3"

是否有一种方法可以区分null和"?OpenCSV似乎将所有内容视为非空字符串。我能告诉它把空字段当作null吗?

添加到@Gavriel的回答,从OpenCSV 3.6(可能更早)开始,我发现strictQuotes不再帮助返回null了。

CSVReaderBuilder有withFieldAsNull()用于此目的。

CSVReader csvReader = new CSVReaderBuilder(csvFileReader)
    .withFieldAsNull(CSVReaderNullFieldIndicator.EMPTY_SEPARATORS)
    .build();

打开CSV 5.0

CSVParser csvParser = new CSVParserBuilder()
                        .withSeparator(",")
                        .withQuoteChar('"')
                        .withFieldAsNull(CSVReaderNullFieldIndicator.BOTH)
                        .build();
                csvReader = new CSVReaderBuilder(new InputStreamReader(...))
                        .withCSVParser(csvParser)
                        .build();

不可能。在CSV格式的哲学中,空字符串和java特定的null之间没有区别。nulljava对象内存模型中的空引用。在CSV中没有任何引用,只有空值。

我找到了解决方案:strictQuotes可以用来获取null:

CSVReader reader = new CSVReader(isReader, ',', '"', true);
while ((col = reader.readNext()) != null) {
   String c1 = col[1];
   if (null != c1) {
       // ...
   }
}

相关内容

  • 没有找到相关文章

最新更新