gpt4 book ai didi

supercsv - 用逗号作为小数点分隔符解析双 superCSV?

转载 作者:行者123 更新时间:2023-12-04 18:11:02 24 4
gpt4 key购买 nike

我想使用 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要么:
  • 解析一个 Double(带有可配置的小数分隔符)
  • 将 BigDecimal 转换为 Double (调用 doubleValue() ) - 然后可以将其链接在您的 new ParseBigDecimal(FRENCH_SYMBOLS) 之后

  • 哦,将来您可能想提及您的文件是用分号分隔的,并且您已经使用 CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE 设置了 Super CSV。 :)

    关于supercsv - 用逗号作为小数点分隔符解析双 superCSV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14254435/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com