java - super CSV 和分组分隔符

标签 java bigdecimal supercsv

我们正在尝试读取包含以下格式的数字的文件: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/

相关文章:

java - 使用 SuperCSV ICsvBeanReader 解析枚举

java - Excel 不显示使用 Super CSV 创建的 CSV 文件中的变音字符

java - SUPER CSV 将 bean 写入 CSV

java - Weblogic 异常 : javax. naming.NameNotFoundException : Unable to resolve 'jdbc.payment' . Resolved 'jdbc' ;剩余名称 'payment'

java - 如何使用泛型限制接受某些用户定义的类对象的方法?

java - 当我将 78.9 插入 Mysql(使用 JDBC)时,它会四舍五入为 79 吗?这是正常的吗

java - 从Java中的Bigdecimal中提取整数和小数部分

java - 我怎样才能编写干净和简单的代码许多 if 和 else

java - 找出几个进程中最常见的时间

java - 在 Java 中将 double 转换为 BigDecimal