StringUtils.isNumeric为“”返回true,为7.8返回false。这当然是记录在案的行为,但对我来说真的不是最方便的。是否有其他东西(理想情况下在commons.lang中)提供了isActuallyNumeric?
答案 0 :(得分:37)
从org.apache.commons.lang.math.NumberUtils
尝试isNumber(String)
。
检查String [是]是否为有效的Java编号。
有效数字包括标有0x限定符的十六进制数, 科学记数法和用类型限定符标记的数字(例如 123L)。
Null
并且空字符串将返回false
。
更新 -
isNumber(String)
现已弃用。请改用isCreatable(String)
。
感谢eav指出它。
答案 1 :(得分:6)
NumberUtils.isNumber已被弃用。
你应该使用
NumberUtils.isCreatable
或
NumberUtils.isParsable
所有这些都支持小数点值:
false
(例如09)。如果您想获得它的价值,您应该使用NumberUtils.createNumber。0~9
和小数点(.
),任何其他字符(例如空格或其他任何字符)都将返回false
。顺便说一下,StringUtils.isNumberic
的工具在commons-lang和commons-lang3之间有一些不同。在commons-lang中,StringUtils.isNumberic("")是true
。但是在commons-lang3中,StringUtils.isNumberic("")是false
。您可以通过文档获得更多信息。
答案 2 :(得分:5)
这不完全在commons.lang
中,但它会起作用。
try {
double d = Double.parseDouble(string);
// string is a number
} catch (NumberFormatException e) {
// string is not a number
}
答案 3 :(得分:1)
或者你可以查看是否有任何字符与非数字相匹配..
if(myStr.replaceAll("^$"," ").matches("[^\\d\\.]"))
然后你知道那里的东西不是0-9和/或a。
这是javascript等价物(将字符串修改为实验)...