java - 将货币解析为双倍引发异常

标签 java android parsing currency

我有一个字符串“R$3.333,33”,我尝试使用此方法将其解析为 double 值:

public static BigDecimal parse(final String amount, final Locale locale) throws ParseException {
        final NumberFormat format = NumberFormat.getCurrencyInstance(locale);
        if (format instanceof DecimalFormat) {
            ((DecimalFormat) format).setParseBigDecimal(true);
        }
        return (BigDecimal) format.parse(amount.replaceAll("[^\\d.,]", ""));
    }

但是我收到一个异常:

W/System.err: java.text.ParseException: Unparseable number: "3.333,33" (at offset 8)

我使用它的方式如下:

Ferramentas.parse(value.getText().toString(), Locale.FRANCE)

最佳答案

我发现的唯一解决方案是替换正则表达式中的 .:

return (BigDecimal) format.parse(amount.replaceAll("[^\\d,]",""));

我无法用 . 解析数千个数字。

  • 如果保留 .,它将被解析为 3
  • 如果将 . 替换为 ,,它会被解析为 3.333

如果有人有针对数千人的 . 的解决方案,我真的很想听听。

关于java - 将货币解析为双倍引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40097162/

相关文章:

java - 为什么 java 编译器在实际编译之前剥离所有 unicode 字符?

android - 如何从 firebase 获取 url 图片并将其保存在字符串中?

python - 如何解析具有多个根元素的xml

java - Hibernate 3.2.0 Final 中的二级缓存

java - 如何通过java matcher正则表达式检查IP范围

android - 如何检查ContactsContract是否有照片

android - 使用导航组件 API 时更改语言 24+

c# - C#中的双重类型解析错误

c# - 将字符串解析为多个变量

java - 比较 Java 中的 float 和 double 原语