2013-09-27 50 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首選項來解決此問題,但請注意,這也會刪除任何前導/尾隨空格 - 您可能不想要的。

相關問題