2013-09-27 29 views
2

我在java中使用SuperCSV来读取一个csv文件。我有一个包含日期的列,但记录可能没有填充,所以我将它设置为可选。在我CellProcessor我将该字段定义为在SuperCSV中是否有可选的ParseDate SuperCsvCellProcessorException的解决方法?

..., 
    new Optional(new ParseDate("MM/dd/yyyy",true)), 
    ... 

当ParseDate遇到它返回一个空单元格” ...... SuperCsvCellProcessorException:”'不能被解析为一个日期。”

如何在这种情况下继续处理parseDate?

回答

2

当Super CSV读取CSV时,只有空列(即空字符串)被映射为空 - 空格将被读为空格。这是因为在RFC4180 CSV mimetype规范中,空白符号很重要。因此Optional不会绕过下一个处理器的空间。您可以使用该处理器的设置来代替:

new Optional(new Token(" ", null, new ParseDate("MM/dd/yyyy",true))); 

这将返回null如果遇到空(在CSV即空字符串)或一个单一的空间,并绕过试图解析它作为一个日期。

您也可以启用surroundingSpacesNeedQuotes首选项来解决此问题,但请注意,这也会删除任何前导/尾随空格 - 您可能不想要的。

相关问题