是否有StringUtils.isNumeric的替代方法,我的意思是什么?

时间:2012-05-31 00:10:20

标签: java apache-commons

StringUtils.isNumeric为“”返回true,为7.8返回false。这当然是记录在案的行为,但对我来说真的不是最方便的。是否有其他东西(理想情况下在commons.lang中)提供了isActuallyNumeric?

4 个答案:

答案 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

所有这些都支持小数点值:

  • NumberUtils.isCreatable支持十六进制,八进制数字,科学记数法和用类型限定符标记的数字(例如123L)。无效的八进制值将返回false(例如09)。如果您想获得它的价值,您应该使用NumberUtils.createNumber
  • NumberUtils.isParsable仅支持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等价物(将字符串修改为实验)...

http://jsfiddle.net/LzZE6/