2

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

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

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

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

4

1 回答 1

2

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

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

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

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

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

于 2013-09-28T00:16:39.960 回答