美文网首页
java 判断字符串是否为数字

java 判断字符串是否为数字

作者: 低至一折起 | 来源:发表于2017-12-05 19:58 被阅读0次

正则表达式

方法一:

public static boolean isNumeric1(String str) {
  Pattern pattern =Pattern.compile("[0-9]*");
  return pattern.matcher(str).matches();
}

方法二:

public static boolean isNumeric(String str) {
  if(str.matches("\\d*")) {
    return true;
  } else {
    return false;
  }
}

java自带函数

public static boolean isNumeric(String str) {
  for (int i = str.length();--i>=0;) {
    if(!Character.isDigit(str.charAt(i))){
      returnfalse;
    }
  }
  return true;
}

判断ASCII码值

public static boolean isNumeric(String str) {
  for (int i = str.length(); --i>=0;) {
    intchr = str.charAt(i);
    if(chr < 48 || chr > 57)
    return false;
  }
  return true;
}

逐个判断str中的字符是否是0-9

public static boolean isNumeric3(String str) {
  final String number = "0123456789";
  for(int i = str.length(); --i>=0;) {
    if(number.indexOf(str.charAt(i)) ==-1){
      return false; 
    }
  }
  return true;
}

捕获NumberFormatException异常

public static boolean isNumeric00(String str) {
  try{
    Integer.parseInt(str);
    return true;
  } catch (NumberFormatExceptione) {
    System.out.println("异常:\""+ str + "\"不是数字/整数...");
    return false;
  }
}

不提倡使用方法6,原因如下:

  1. NumberFormatException是用来处理异常的,最好不要用来控制流程的。
  2. 虽然捕捉一次异常很容易,但是创建一次异常会消耗很多的系统资源,因为它要给整个结构作一个快照。

看一下JDK源码:

public static long parseLong(String s,intradix) 
throwsNumberFormatException 
{ 
if(s ==null){ 
throw new NumberFormatException("null"); 
} 
if(radix 
throw new NumberFormatException("radix " + radix +
" less thanCharacter.MIN_RADIX"); 
} 
if(radix >Character.MAX_RADIX){ 
throw new NumberFormatException("radix " + radix +
" greater thanCharacter.MAX_RADIX"); 
} 
long result =0; 
boolean negative = false;
int i = 0,max =s.length(); 
long limit; 
longmultmin; 
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 
digit =Character.digit(s.charAt(i++),radix); 
if(digit < 0){
throw newNumberFormatException(s); 
}else{ 
result = -digit;
} 
} 
while(i 
// Accumulating negatively avoidssurprises near MAX_VALUE
digit =Character.digit(s.charAt(i++),radix); 
if(digit <0){ 
throw newNumberFormatException(s); 
} 
if(result 
throw newNumberFormatException(s); 
} 
result *=radix; 
if(result < limit +digit){ 
throw newNumberFormatException(s); 
} 
result -=digit; 
} 
}else{ 
throw new NumberFormatException(s); 
} 
if(negative){ 
if(i >1){ 
return result;
}else{ 
throw newNumberFormatException(s); 
} 
}else{ 
return -result; 
} 
}

可以看出来jdk里也是一个字符一个字符的判断,如果有一个不是数字就抛出NumberFormatException,所以还不如这个工作由我们自己来做,还省得再抛出一次异常...

相关文章

  • java 正则 常用

    1、判断字符串 是否为纯字母 2、判断字符串 是否为纯数字 3、判断字符串 是由字母和数字组成 4、判断字符串 是...

  • iOS【NSString基本方法】

    判断字符串是否包含数字 判断字符串是否包含英文字母 判断字符串是否包含数字与字母 去掉首尾空格字符 判断是否为空 ...

  • python 判断输入类型

    判断Python输入是否为数字 在接收raw_input方法后,判断接收到的字符串是否为数字 例如: str = ...

  • java 中判断各种数据类型是否为空

    字符串java中判断字符串都是空的方法 判断list是否为空(Map、Set同list) 判断date数据类型是否为空

  • java 判断字符串是否为数字

    正则表达式 方法一: 方法二: java自带函数 判断ASCII码值 逐个判断str中的字符是否是0-9 捕获Nu...

  • Isdigit and isalnum

    isdigit判断字符串是否全由数字组成 isalnum判断字符串是否全由数字和字母组成

  • OC中常用的String类别

    获取Url中参数对应的value 判断字符串中是否有中文 判断是否为QQ号 判断是否为手机号 是否是数字 是否是身...

  • 判断字符串是否为数字

    判断一个字符串是否为数字

  • JS常用字符串处理轮子

    一、字符串限制 判断字符串是否全部都是数字 判断字符串是否全部都是字母 判断字符串是否是字符与数字 字符串前后空格...

  • java判断是否为数字

网友评论

      本文标题:java 判断字符串是否为数字

      本文链接:https://www.haomeiwen.com/subject/ggthixtx.html