问题描述
我将避免重新发明此方法,而应使用Apache Commons。如果您使用Spring,Struts或许多其他常用的Java库,则它们通常包含Apache Commons。您将需要commons- lang.jar文件。这是您想要的NumberUtils中的方法:
isNumber[1]
public static boolean isNumber(java.lang.String str)
Checks whether the String a valid Java number.
Valid numbers include hexadecimal marked with the 0x qualifier, scientific notation and numbers marked with a type qualifier (e.g. 123L).
Null and empty String will return false.
Parameters:
str - the String to check
Returns:
true if the string is a correctly formatted number
解决方法
我正在寻找一种方法,如果传递的字符串是有效数字(例如,“ 123.55e-9”,“-333,556”),则返回布尔值。我 不 希望只是做:
public boolean isANumber(String s) {
try {
BigDecimal a = new BigDecimal(s);
return true;
} catch (NumberFormatException e) {
return false;
}
}
显然,该函数应使用状态机(DFA)来解析字符串,以确保无效的示例不会使其蒙骗(例如“ -21,22.22.2”,“
33-2”)。你知道这样的图书馆是否存在吗?我真的不想自己写它,因为这是一个很明显的问题,我相信我会重新发明轮子。
谢谢,
缺口