无法解析逗号分隔的字符串数量。最初带有货币符号

时间:2016-08-12 04:22:06

标签: java swing number-formatting parseexception

我试图转换以逗号分隔的String货币值。它最初有一个货币符号。在这种情况下,比索标志。

enter image description here

我所做的是先删除Pesos标志,然后从JTable的第2列获取值String "212,312.00",但是当我尝试使用{{}时1}}或Double.valueOf("212,312.00")它返回了Double.parseDouble("212,312.00")错误。

NumberFormatException

这是我的代码:

java.text.ParseException: Unparseable number: " 212,312.00"

有什么建议吗?我尝试了两种不同的解析方法,但看起来逗号是引起异常的原因。

2 个答案:

答案 0 :(得分:0)

您可能需要使用java.text.NumberFormat

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
Number number = format.parse("212,312.00");
double d = number.doubleValue();

注意:这仅在当前默认语言环境恰好使用逗号作为小数分隔符时才有效。某些语言环境使用逗号作为千位分隔符,在这种情况下,“212,312.00”将解析为212312.00而不是抛出错误。

否则,您可以使用replaceAll并从数字中删除逗号()并仅解析数字。

答案 1 :(得分:0)

我意识到我必须添加另一个.replaceAll()作为.replaceAll(",","");摆脱逗号。添加另一个replaceAll()

后,解析时没有出现任何异常错误
for (int x = 0; x < feesJtbl.getRowCount(); x++) {
     String valueWithPesosSign = ((String) myModel.getValueAt(x, 1));
     String stringAmount = valueWithPesosSign.replaceAll("\\P{Print}", "").replaceAll(",","");

     doubleAmount = Double.parseDouble(stringAmount);
     totalOfTuition += doubleAmount;
}