【发布时间】:2013-01-07 19:55:46
【问题描述】:
如何以区域设置敏感的方式验证包含十进制数字的字符串? NumberFormat.parse 允许太多,而 Double.parseDouble 仅适用于英语语言环境。这是我尝试过的:
public static void main(String[] args) throws ParseException {
Locale.setDefault(Locale.GERMAN);
NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.getDefault());
Number parsed = numberFormat.parse("4,5.6dfhf");
System.out.println("parsed = " + parsed); // prints 4.5 instead of throwing ParseException
double v = Double.parseDouble("3,3"); // throws NumberFormatException, although correct
}
【问题讨论】:
-
如果您的语言环境是德语,并且输入是
3.3而不是3,3,是否应该抛出异常? -
Number parsed = numberFormat.parse("4.5.6dfhf");也可以工作并产生456... Eurgh... -
jlordo:至少它应该接受正确的数字...
-
assylias:是的,这就是我的意思,它允许太多... :(
标签: java validation