以下结果是Exception:
String p="1,234";
Double d=Double.valueOf(p);
System.out.println(d);
有没有更好的方法来分析"1,234",以得到1.234比:p = p.replaceAll(",",".");?
17
以我的经验,按照您的建议,replaceAll()是执行此操作的最佳方法。它不依赖于当前的语言环境,它很简单并且可以正常工作。
—
Joonas Pulakka 2010年
@Marco Altieri:
—
Joonas Pulakka
replaceAll(",",".")用点替换所有逗号。如果没有逗号,则不执行任何操作。Double.valueOf()(仅)适用于使用点作为小数点分隔符的字符串。当前的默认语言环境不会影响此处的任何内容。docs.oracle.com/javase/8/docs/api/java/lang/...
唯一的问题
—
artemisian
replaceAll(",",".")是它只有在有一个逗号的情况下才有效:即:1,234,567将抛出 java.lang.NumberFormatException: multiple points。具有正向前瞻性的正则表达式可满足p.replaceAll(",(?=[0-9]+,)", "").replaceAll(",", ".")更多要求:regular-expressions.info/lookaround.html
没有问题。NumberFormatException是好的。您怎么知道哪个逗号是正确的?格式错误,您所能做的就是向用户显示比异常更好的可读性消息。
—
令人难以置信的
@TheincredibleJan不,格式没有错误。一些语言环境使用逗号作为千位分隔符,因此您可以在数字中使用多个逗号,并且从技术上讲,这仍然是有效的输入。
—
Vratislav Jindra '18