无法解析逗号分隔的字符串数量。最初带有货币符号
Posted
技术标签:
【中文标题】无法解析逗号分隔的字符串数量。最初带有货币符号【英文标题】:Unable to parse comma separated string amount. Originally with Currency symbol 【发布时间】:2016-08-12 04:22:05 【问题描述】:我正在尝试转换以逗号分隔的 String
货币值。它最初有一个货币符号。在这种情况下,比索符号。
我所做的是首先删除比索符号并从 JTable
的第 2 列中获取值,这给了我 String
的值 "212,312.00"
但是当我尝试使用 Double.valueOf("212,312.00")
或 Double.parseDouble("212,312.00")
它时返回了 NumberFormatException
错误。
java.text.ParseException: Unparseable number: " 212,312.00"
这是我的代码:
for (int x = 0; x < feesJtbl.getRowCount(); x++)
String valueWithPesosSign = ((String) myModel.getValueAt(x, 1));
String stringAmount = valueWithPesosSign.replaceAll("\\PPrint", "");
//JOptionPane.showMessageDialog(null, stringAmount);
doubleAmount = Double.parseDouble(stringAmount);
totalOfTuition += doubleAmount;
有什么建议吗?我尝试了 2 种不同的解析方式,但看起来逗号是导致异常的原因。
【问题讨论】:
【参考方案1】:您可能需要使用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
并从数字中删除逗号 (,) 并仅解析数字。
【讨论】:
【参考方案2】:我意识到我只需添加另一个.replaceAll()
为.replaceAll(",","")
;摆脱逗号。添加另一个replaceAll()
后解析没有任何异常错误
for (int x = 0; x < feesJtbl.getRowCount(); x++)
String valueWithPesosSign = ((String) myModel.getValueAt(x, 1));
String stringAmount = valueWithPesosSign.replaceAll("\\PPrint", "").replaceAll(",","");
doubleAmount = Double.parseDouble(stringAmount);
totalOfTuition += doubleAmount;
【讨论】:
以上是关于无法解析逗号分隔的字符串数量。最初带有货币符号的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Web API 可以正确解析动作路径中逗号分隔的 int 数组,但无法解析逗号分隔的十进制数组?