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

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

org.apache.commons.lang.math.NumberUtils尝试isNumber(String)

检查String [是]是否为有效的Java编号。

有效数字包括用0x限定符标记的hex,科学记数法和用类型限定符标记的数字(例如123L)。

Null和空String将返回false

更新 –

isNumber(String)现已弃用。 请改用isCreatable(String)

谢谢eav指出来。

这不完全在commons.lang ,但它会起作用。

 try { double d = Double.parseDouble(string); // string is a number } catch (NumberFormatException e) { // string is not a number } 

不推荐使用NumberUtils.isNumber 。

你应该使用

 NumberUtils.isCreatable 

要么

 NumberUtils.isParsable 

它们都支持小数点值:

  • NumberUtils.isCreatable支持hex,八进制数字,科学记数法和用类型限定符标记的数字 (例如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 。 您可以通过文档获得更多信息。

或者您可以检查是否有任何字符匹配非数字这样的..

if(myStr.replaceAll("^$"," ").matches("[^\\d\\.]"))然后你知道那里的东西不是0-9和/或a。

这是javascript等价物(将字符串修改为实验)…

http://jsfiddle.net/LzZE6/