我有以下代码来解析一个名为 str 的字符串变量。
NumberFormat formatter = NumberFormat.getInstance();
Number number = formatter.parse(str);
我想捕获当 str 不是数字时抛出的异常只是为了验证它。我遇到的问题是它并不总是抛出预期的 ParseException。当字符串 str 以数字开头但随后是字符时,它似乎获取字符串的第一个字符并将它们解析为数字。
例如:
- 如果 str="a10" 然后抛出 ParseException
- 如果 str="10a" 则不抛出异常并且 number=10
我不能使用 Double.parseDouble(str) 因为 str 可以有逗号和点,如 1,000.98 并且此方法不理解这种格式。
为什么会这样?我可以用任何其他方式验证它吗?谢谢