我想使用 SuperCSV CellProcessor 用逗号作为小数分隔符(',' 而不是 '.')解析 double 数
我想将第一个元素 (0,35) 解析为 Double
0,35;40000,45
我试过这样的事情:
/** FRENCH_SYMBOLS */
private static final DecimalFormatSymbols FRENCH_SYMBOLS = new DecimalFormatSymbols(Locale.FRANCE);
DecimalFormat df = new DecimalFormat();
df.setDecimalFormatSymbols(FRENCH_SYMBOLS);
final CellProcessor[] processors = new CellProcessor[] {
new NotNull(new ParseDouble(new FmtNumber(df))),
new NotNull(new ParseBigDecimal(FRENCH_SYMBOLS)) };
ParseBigDecimal 工作得很好,但 parseDouble 似乎不起作用,它给了我一个异常(exception):org.supercsv.exception.SuperCsvCellProcessorException: '0,35' could not be parsed as a Double
最佳答案
你完全正确 - ParseDouble
不支持法式小数点分隔符(逗号),但 ParseBigDecimal
做。如果您认为这是一个有用的功能,为什么不提交 feature request .
最简单的解决方法是简单地链接一个 StrReplace之前ParseDouble
将逗号转换为句号。
new StrReplace(",", ".", new ParseDouble())
或者,你可以写一个 custom cell processor要么:
doubleValue()
) - 然后可以将其链接在您的 new ParseBigDecimal(FRENCH_SYMBOLS)
之后哦,将来您可能想提及您的文件是用分号分隔的,并且您已经使用
CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE
设置了 Super CSV。 :)
关于supercsv - 用逗号作为小数点分隔符解析双 superCSV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14254435/