我正在尝试确定String
是否代表Double
。我希望以下代码抛出NumberFormatException
:
String s = "type1234";
try {
Double val = Double.parseDouble(s);
} catch (NumberFormatException e) {
// Handle exception
e.printStackTrace();
}
相反,val
最终会以Infinity
结束。我在标准JVM中运行代码,确实抛出了NumberFormatException
看起来Android忽略了主要字符'typ',然后将其解析为e ^ 1234,这超出了Double
的范围。
这是预期的行为吗?如果是,那么确定String
是否可以解析为Double
的更可靠方法是什么?
答案 0 :(得分:2)
如果您不信任该框架,请使用正则表达式来验证自己。以下是一种实现此目的的方法示例。
// You can get much fancier than this to handle all cases, but this should handle most
String regexDouble = "^-?\\d*(\\.\\d+)?$";
boolean isDouble = val.matches(regexDouble);
答案 1 :(得分:1)
Fastest way to check if a String can be parsed to Double in Java
这篇文章的答案适用于android。我在ICS上测试了它。