我希望能够提供一种方法,如果传递的字符串是一个有效的数字(例如“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”)。你知道是否存在这样的库吗?我真的不想自己编写它,因为这是一个非常明显的问题,我相信我一定会重新发明轮子。
谢谢,
Nick