判断字符串是否为数字
//1、正则表达式
public static boolean isNumeric1(Stringstr){
Pattern pattern =Pattern.compile("[0-9]*");
returnpattern.matcher(str).matches();
}
//2、java自带函数
public static boolean isNumeric2(Stringstr){
for (int i =str.length();--i>=0;){
if(!Character.isDigit(str.charAt(i))){
returnfalse;
}
}
returntrue;
}
//3、正则表达式
public static boolean isNumeric(Stringstr){
if(str.matches("\\d*")){
returntrue;
}else{
returnfalse;
}
}
//4、判断ASCII码值
public static boolean isNumeric0(Stringstr){
for(inti=str.length();--i>=0;){
intchr=str.charAt(i);
if(chr<48|| chr>57)
returnfalse;
}
returntrue;
}
//5、逐个判断str中的字符是否是0-9
public static boolean isNumeric3(Stringstr){
final Stringnumber = "0123456789";
for(int i =0;i
if(number.indexOf(str.charAt(i)) ==-1){
returnfalse;
}
}
returntrue;
}
//6、捕获NumberFormatException异常
public static boolean isNumeric00(Stringstr){
try{
Integer.parseInt(str);
returntrue;
}catch(NumberFormatExceptione){
System.out.println("异常:\""+ str + "\"不是数字/整数...");
returnfalse;
}
}
ps:不提倡使用方法6,原因如下:
1、NumberFormatException是用来处理异常的,最好不要用来控制流程的。
2、虽然捕捉一次异常很容易,但是创建一次异常会消耗很多的系统资源,因为它要给整个结构作一个快照。
看一下JDK源码:
public static long parseLong(String s,intradix)
throwsNumberFormatException
{
if(s ==null){
throw new NumberFormatException("null");
}
if(radix <Character.MIN_RADIX){
throw new NumberFormatException("radix " + radix +
" less thanCharacter.MIN_RADIX");
}
if(radix >Character.MAX_RADIX){
throw new NumberFormatException("radix " + radix +
" greater thanCharacter.MAX_RADIX");