我在Java中使用SuperCSV读取csv文件。我有一列包含日期,但记录可能未填充,因此将其设置为可选。在我的CellProcessor中,我将字段定义为
...,
new Optional(new ParseDate("MM/dd/yyyy",true)),
...
当ParseDate遇到一个空单元格时,它将返回“ ... SuperCsvCellProcessorException:''无法被解析为Date。”
在这种情况下如何继续处理parseDate?
当超级CSV读取CSV时,只有空列(即空字符串)被映射为null-一个空格将被读取为一个空格。这是因为空格在RFC4180(CSV模仿类型规范)中很重要。
因此,Optional
请勿在空间上绕过下一个处理器。您可以改用以下处理器设置:
new Optional(new Token(" ", null, new ParseDate("MM/dd/yyyy",true)));
null
如果遇到null(即CSV中的空String)或单个空格,则返回该值,并绕过尝试将其解析为日期的尝试。
您还可以启用周围的SpacesNeedQuotes首选项来解决此问题,但是请注意,这还将去除任何前导/后缀空间-您可能不需要。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句