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

标签 java supercsv

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

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

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

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

最佳答案

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

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

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

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

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

关于java - SuperCSV 中的可选 ParseDate SuperCsvCellProcessorException 是否有解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19058807/

相关文章:

java - 设置oracle 11g集成jsf spring hibernate

java - 找不到 bundle java.util 的资源

java - 使用 SuperCSV 读取特定行

java - 使用 SuperCSV CSVBeanReader 时在字符串上使用什么单元处理器

java - SUPER CSV 将 bean 写入 CSV

java - 在 Groovy 中使用参数动态创建方法

java - InputStreamReader readLine 方法返回错误的字符串

java - BufferedWriter 性能缓慢

java - NoSuchBeanDefinitionException : No qualifying bean of type 'int'