网上一大堆
java判断string变量是否是数字的五、六、七…种方法小结
什么正则、ASCII、逐个拆分、org.apache.commons.lang都是屁
判断string是否为数字、整数、小数 ,不支持科学计数法
int、float、double分开判断…
以上 统一叫这也判断不了那也判断不了比较合适
没那么麻烦
直接使用 BigDecimal 类即可,示例如下:
// 科学计数法、int、float、double、正数、负数...均可
public boolean isNumber(String str) {
try {
new BigDecimal(str);
} catch (Exception e) {
return false;
}
return true;
}
来个粗糙测试
@Test
public void test() {
List<String> temps = new ArrayList<String>();
temps.add("20");
temps.add("0.4884375");
temps.add("696.9266");
temps.add("1.5092764E-6");
temps.add("1.6894258E-8");
temps.add("9.07E-43");
temps.add("0.0");
temps.add("956484");
temps.add("0.1198272");
temps.add("49.968433");
temps.add("a");
temps.add(null);
temps.forEach(new Consumer<String>() {
@Override
public void accept(String data) {
try {
System.err.println(data+"---->"+new BigDecimal(data)+"---->是合法数字");
} catch (Exception e) {
System.out.println(data+"---->不是合法数字");
}
}
});
}
测试结果: