我们正在尝试读取包含以下格式的数字的文件:123.456,78
( according to Wikipedia this is usual for some countries - e.g. Germany )。
Super CSV 配置为将列解析为 BigDecimal:new ParseBigDecimal(new DecimalFormatSymbols(GERMANY))
。
这对于 1k 以下的数字效果很好,但分组分隔符处理不正确:'1.999,00' 无法解析为 BigDecimal
。
我已经看到可以编写 custom cell processor ,但也许有人知道是否有更简单的方法或者这是否是 Super CSV 中的已知错误。
更新:
Super CSV 集成了该功能并在 2.2.0 版本中发布。它将适用于通过 DecimalFormatSymbols
参数提供的所有分组分隔符。
最佳答案
ParseBigDecimal
(2.2.0 之前的版本)仅使用提供的 DecimalFormatSymbols
中的小数分隔符(而不是分组分隔符)。这不是一个错误,只是当前实现的限制。
您可以在 ParseBigDecimal
之前链接 StrReplace
(即将 "."
替换为 ""
),并且这应该可以(快速)解决您的问题。
我认为 ParseBigDecimal
实际上应该为您执行此操作。 更新:自 2.2.0 版本以来也是如此。
就像你说的,你也可以随时编写自己的细胞处理器:)
关于java - super CSV 和分组分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23223181/