判断一个字符串是否为数字,要考虑几种情况:
1. 该字符串是 "0"
2. 零点几
3. 整数部分大于等于1,但是首字符不能为'0'
考虑上面几种情况,如将字符串转化为字符数组去判断,未免麻烦,我们可以尝试使用Java本身的一些工具来实现该功能。
一.利用正则表达式
查询JDK文档的Pattern与Matcher类,可得出如下代码:
注:正则表达式 [1-9]\\d*(\\.\\d+){0,1},代表不以0开头的数字,其中(\\.\\d+){0,1}表示把(\\.\\d+)看成一个组,即 小数点数字(至少一个数字) 这个组, 出现0或者1次。
也可直接 inputString.matches("^[1-9]\\d*(\\.\\d+)?$") //[1-9]开头的数字,使用String的matches方法,来比对正则表达式
正则表达式(\\+|\\-)?(([1-9]\\d*)|0)(\\.\\d+)?还可以对正负号进行判定,(\\+|\\-)? 正负号的判定也可写成[+-]?,(([1-9]\\d*)|0)对0或者非0开头的字符串进行判定,(\\.\\d+)?对小数点后的进行判定。看来正则表达式真的很有用。呵呵
不过这种方法依然麻烦,其实java的类库提供有更好的方法来判断一个字符串是否为合法的数
二.利用NumberFormat和Number类
关于这两个类的介绍大家可以自己看看文档
相比较来说,第二种方法更简洁而且也不用考虑国际化的问题(欧洲国家,小数点都是逗号,千分位是点,上述第一种方法就不使用了),一群牛人都已经帮你考虑好。不过通过第一种方法我们可以学到正则表达式的用法。呵呵
看来用Java还是要多学会利用Java本身的类库。
Powered by: BlogJava Copyright © zhrb