【发布时间】:2012-01-15 00:36:53
【问题描述】:
我正在验证来自表单的用户输入。
我用NumberFormat 解析输入,但它是邪恶的并且允许几乎任何东西。有什么方法可以更严格地解析数字吗?
例如对于整数,我不想允许这三个输入,但Numberformat 允许所有这些输入:
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setParseIntegerOnly(true);
Number numberA = nf.parse("99.731"); // 99 (not what the user expect)
Number numberB = nf.parse("99s.231"); // 99 (invalid)
Number numberC = nf.parse("9g9"); // 9 (invalid)
System.out.println(numberA.toString());
System.out.println(numberB.toString());
System.out.println(numberC.toString());
【问题讨论】:
-
如何将其转换为字符串,然后遍历字符串并只允许字符“0”..“9”?或者只是去 getIntegerInstance();
-
@DorinDuminica:
getIntegerInstance()给出相同的结果。 -
为什么不使用
Integer.parseInt(String) -
这个问题不清楚。您没有准确说明应该允许哪些格式......或者您是否要接受“区域设置敏感”整数格式。
标签: java validation number-formatting