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

Kev*_*son 17 java apache-commons

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

JHS*_*JHS 37

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

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

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

Null和空字符串将返回false.

更新 -

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

谢谢eav指出来.

  • 幸运的是,isNumber("** - 2**")给出_true_. (2认同)
  • 更新:isNumber(String)在commons-lang3 3.5中被弃用,我使用的是isParseable(String),它工作正常 - 感谢提示. (2认同)

Cnf*_*nfn 8

NumberUtils.isNumber已弃用.

你应该使用

NumberUtils.isCreatable
Run Code Online (Sandbox Code Playgroud)

要么

NumberUtils.isParsable
Run Code Online (Sandbox Code Playgroud)

它们都支持小数点值:

  • NumberUtils.isCreatable支持十六进制,八进制数,科学记数法和用类型限定符标记的数字(例如123L).将返回无效的八进制值false(例如09).如果要获取其值,则应使用NumberUtils.createNumber.
  • NumberUtils.isParsable仅支持0~9和小数点(.),任何其他字符(例如空格或其他任何东西)将返回false.

顺便说一下,StringUtils.isNumeric在公共语言和公共语言之间的实现有一些不同.在commons-lang中,StringUtils.isNumberic("")true.但是在commons-lang3中,StringUtils.isNumberic("")false.您可以通过文档获得更多信息.