Java正则表达式JDK工作
最近遇到判断数字的问题,简单总结了一下和大家分享~
//1、正则表达式
public static boolean isNumeric1(String str){
Pattern pattern = Pattern.compile("[0-9]*");
return pattern.matcher(str).matches();
}
//2、java自带函数
public static boolean isNumeric2(String str){
for (int i = str.length();--i>=0;){
if (!Character.isDigit(str.charAt(i))){
return false;
}
}
return true;
}
//3、正则表达式
public static boolean isNumeric(String str){
if(str.matches("\\d*")){
return true;
}else{
return false;
}
}
//4、判断ASCII码值
public static boolean isNumeric0(String str){
for(int i=str.length();--i>=0;){
int chr=str.charAt(i);
if(chr<48 || chr>57)
return false;
}
return true;
}
//5、逐个判断str中的字符是否是0-9
public static boolean isNumeric3(String str){
final String number = "0123456789";
for(int i = 0;i<str.length();i++){
if(number.indexOf(str.charAt(i)) == -1){
return false;
}
}
return true;
}
//6、捕获NumberFormatException异常
public static boolean isNumeric00(String str){
try{
Integer.parseInt(str);
return true;
}catch(NumberFormatException e){
System.out.println("异常:\"" + str + "\"不是数字/整数...");
return false;
}
}
ps:不提倡使用方法6,原因如下:
1、NumberFormatException是用来处理异常的,最好不要用来控制流程的。
2、虽然捕捉一次异常很容易,但是创建一次异常会消耗很多的系统资源,因为它要给整个结构作一个快照。
看一下JDK源码:
public static long parseLong(String s,int radix)
throws NumberFormatException
{
if(s == null){
throw new NumberFormatException("null");
}
if(radix < Character.MIN_RADIX){
throw new NumberFormatException("radix " + radix +
" less than Character.MIN_RADIX");
}
if(radix > Character.MAX_RADIX){
throw new NumberFormatException("radix " + radix +
" greater than Character.MAX_RADIX");
}
long result = 0;
boolean negative = false;
int i = 0,max = s.length();
long limit;
long multmin;
int digit;
if(max > 0){
if(s.charAt(0) == '-'){
negative = true;
limit = Long.MIN_VALUE;
i++;
}else{
limit = -Long.MAX_VALUE;
}
multmin = limit / radix;
if(i < max){
digit = Character.digit(s.charAt(i++),radix);
if(digit < 0){
throw new NumberFormatException(s);
}else{
result = -digit;
}
}
while(i < max){
// Accumulating negatively avoids surprises near MAX_VALUE
digit = Character.digit(s.charAt(i++),radix);
if(digit < 0){
throw new NumberFormatException(s);
}
if(result < multmin){
throw new NumberFormatException(s);
}
result *= radix;
if(result < limit + digit){
throw new NumberFormatException(s);
}
result -= digit;
}
}else{
throw new NumberFormatException(s);
}
if(negative){
if(i > 1){
return result;
}else{
throw new NumberFormatException(s);
}
}else{
return -result;
}
}
可以看出来jdk里也是一个字符一个字符的判断,如果有一个不是数字就抛出NumberFormatException,所以还不如这个工作由我们自己来做,还省得再抛出一次异常...
分享到:
相关推荐
Java判断数字是否在制定范围 A B 中或者与A B 相等
主要介绍了详解Java判断是否是整数,小数或实数的正则表达式,非常具有实用价值,需要的朋友可以参考下。
用java判断是不是数字用java判断是不是数字用java判断是不是数字用java判断是不是数字用java判断是不是数字用java判断是不是数字用java判断是不是数字用java判断是不是数字用java判断是不是数字用java判断是不是数字
本文给大家整理了Java判断数字位数的两种常用方法,对此有兴趣的可以跟着小编一起学习下。
java判断字符串是否存在递增或递减 java判断字符串是否重复
java 如何判断回文数字 java 如何判断回文数字
工具类 基础的类型 对象 数据的工具,进行判断或者进行操作
下面小编就为大家分享一篇java 判断一个数组中的数值是否连续相邻的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
在本篇文章里小编给大家整理的是关于java判断一个字符串是否是小数的方法,有需要的朋友们学习下。
本程序是java初级入门者的必修代码,使用了最简单的各位数比较,从而实现了简单的多位数的判断,以及回文数字的判断。
这个是我自己写的一个JAVA的小方法,用正则表达式写的一个判断字符串是否为数字的一个方法,拿过来就能用,很方便,比如说:手机号等
java 数组递增排序 java 数组递增排序 java 数组递增排序
java文件的工具类,封装了常用的操作,尤其针对文件的实际类型,通过获取文件的byte,来查看文件起始字节的魔数值,通过魔数值来判断文件的类型,工具集合了常用的文件类型对应的魔数,也封装了文件类型的判断方法
java 解析Excel 并判断解析的数据类型__Eclipse工程,纯手工,无复制
随机产生字符串,字符串中的字符只能由特殊字符(&@#$%*),大写字母(A-Z),小写字母(a-z)以及数字(0-9)组成,且每种字符至少出现一次。这样产生字符串的方式可以应用到如下场景,比如,我们有一个应用就是添加用户完毕...
主要介绍了java基础-给出一个随机字符串,判断有多少字母?多少数字?文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
E判断是否为两位数.java
获取判断数字范围是否在100到1000之间的值,如图 在或者判断数字大于100且除以100或是小于10的数,如图 使用循环处理2次10或还有值,这时在判断这个值除以10后是不是等于0 ,如图 如果是小数值需要判断可以把...
java代码-判断正负数
java public static void main(String[]args) system. out.println