Java中判断字符串是否为数字的几种方法
来源:互联网 发布:淘宝超级店长使用方法 编辑:程序博客网 时间:2024/06/14 08:52
原文地址:http://blog.csdn.net/u013066244/article/details/53197756
用JAVA自带的函数
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
其中Character.isDigit
方法:确定或判断指定字符是否是一个数字。
测试方法:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
结果显示:
- 1
- 2
- 3
- 4
这种方法显然不能判断 负数。
用正则表达式
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
网上给出的最好的方法,可惜还是错误;首先正则表达式-?[0-9]+.?[0-9]+
这里就错误
网上说:可匹配所有数字。
比如:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
结果
- 1
- 2
- 3
- 4
正确的正则表达式是:-?[0-9]+\\.?[0-9]*
,点号.
,是匹配任意字符,需要进行转义。
注意:感谢网友留言提示了一个错误,之前我的正则表达式是这么写的: -?[0-9]+\\.?[0-9]+
,这种正则表达式在匹配0-9的正负数时,会出错,这是因为该表达式最后是+
,表示的是匹配前一个字符1次或无限次。
也就是说在匹配一位的时候,会出现错误。所以改为*
,表示匹配前一位字符0次或无限次
- 1
结果为
- 1
于是我们改成:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
执行上面代码结果:
- 1
- 2
- 3
- 4
可是为什么double aa = -19162431.1254;
没有匹配为true呢?
原来当数字位数很长时,系统会自动转为科学计数法。所以aa=-1.91624311254E7
.
所以我们需要使用java
专门用于商业精度计数的类 BigDecimal
.
我们需要new BigDecimal(str)
,但是呢,如果str为中文,会报异常。所以我用try catch
捕捉异常。
正确的通用代码(传入包含中文、负数、位数很长的数字的字符串也能正常匹配):
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
使用org.apache.commons.lang
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
第三种我没有测试,网上说,也不能判断负数。
又因为使用第三方的包,我懒得用,java
原生就很好了。
阅读全文
0 0
- Java判断字符串是否为数字的几种方法
- java中判断字符串是否为数字的方法的几种方法
- java中判断字符串是否为数字的方法的几种方法
- java中判断字符串是否为数字的方法的几种方法
- java中判断字符串是否为数字的方法的几种方法
- java中判断字符串是否为数字的方法的几种方法
- java中判断字符串是否为数字的方法的几种方法
- java中判断字符串是否为数字的方法的几种方法
- java中判断字符串是否为数字的方法的几种方法
- java中判断字符串是否为数字的方法的几种方法
- java中判断字符串是否为数字的方法的几种方法
- java中判断字符串是否为数字的方法的几种方法
- java中判断字符串是否为数字的方法的几种方法
- java中判断字符串是否为数字的方法的几种方法
- java中判断字符串是否为数字的方法的几种方法
- java中判断字符串是否为数字的方法的几种方法
- java中判断字符串是否为数字的方法的几种方法
- java中判断字符串是否为数字的方法的几种方法
- .net需要掌握的工具
- keil 帮助工具使用
- LeetCode刷题(40)--Search a 2D Matrix
- C语言练习:百鸡百钱问题
- vue_的基本格式
- Java中判断字符串是否为数字的几种方法
- git 安装后的init、key、clone
- 网络请求哪家强
- easyui实现关闭当前窗口,所有窗口,其他窗口
- Python容器Containers
- Android UI界面中短暂消息提示实现
- 单选框为什么用radio表示?
- 【java多线程】多线程的创建三种方式--笔记
- [备忘录]-Eclipse4.7优化配置