我有一个字符串“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/