是否有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等价物(将字符串修改为实验)…