SuperCSV中是否有可选ParseDate SuperCsvCellProcessorException的解决方法?

时间:2013-09-27 19:39:41

标签: java supercsv

我在java中使用SuperCSV来读取csv文件。我有一个包含日期的列,但可能没有填充记录,所以我将其设置为可选。在我的CellProcessor中,我将字段定义为

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

当ParseDate遇到空单元格时,它返回“... SuperCsvCellProcessorException:''无法解析为日期。”

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

1 个答案:

答案 0 :(得分:2)

当Super CSV读取CSV时,只有空列(即空字符串)被映射为null - 空格将被读取为空格。这是因为空格在CSV模仿规范的RFC4180中很重要。

所以Optional不会绕过下一个处理器占用空间。您可以改用此处理器设置:

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

如果遇到null(即CSV中的空字符串)或单个空格,则返回null,并绕过尝试将其解析为日期。

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