java判断字符串是否是数字

本文介绍了四种使用Java进行数字验证的方法:使用内置函数、正则表达式、ASCII码及类型转换异常处理。并针对不同方法的特点进行了说明,如负数的支持等。

1用JAVA自带的函数
public static boolean isNumeric(String str){
  for (int i = str.length();--i>=0;){  
   if (!Character.isDigit(str.charAt(i))){
    return false;
   }
  }
  return true;
 }

2用正则表达式
public static boolean isNumeric(String str){
    Pattern pattern = Pattern.compile("[0-9]*");
    return pattern.matcher(str).matches();   
 }

3用ascii码

public static boolean isNumeric(String str){
   for(int i=str.length();--i>=0;){
      int chr=str.charAt(i);
      if(chr<48 || chr>57)
         return false;
   }
   return true;
}
4.过强制类型转化是否抛出异常来判断

public boolean isNumber(String checkStr) {
    try {
        Integer.parseInt(checkStr);
        return true; // 未抛出异常,是数字
    } catch (NumberFormatException err) {
        return false; // 抛出异常,不是数字
    }
}

 

 

第一、三种方式只能校验不含负号“-”的数字,即输入一个负数-199,输出结果将是false;
而第二方式则可以通过修改正则表达式实现校验负数,将正则表达式修改为“^-?[0-9]+即可,修改为“-?[0-9]+.?[0-9]+”即可匹配所有数字。

 

### 3.1 使用 Java 自带的函数判断字符串是否为数字 可以通过遍历字符串的每个字符并使用 `Character.isDigit()` 方法来判断是否为数字。这种方式适用于仅包含数字字符的字符串,不适用于包含负号或小数点的字符串。 ```java public static boolean isNumeric(String str) { for (int i = str.length(); --i >= 0; ) { if (!Character.isDigit(str.charAt(i))) { return false; } } return true; } ``` 该方法适用于判断数字字符串,如 `"123456"`,但无法识别负数或小数[^2]。 ### 3.2 使用正则表达式判断整数或数字 可以使用正则表达式判断字符串是否为整数,包括可选的正负号。此方法适用于包含正负号的整数字符串。 ```java import java.util.regex.Pattern; public static boolean isInteger(String str) { Pattern pattern = Pattern.compile("^[-+]?\\d*$"); return pattern.matcher(str).matches(); } ``` 该方法能够识别 `"123"`、`"-456"` 和 `"+789"` 等格式的字符串,但不适用于包含小数点的字符串。 ### 3.3 使用正则表达式判断数字字符串 如果仅需要判断字符串是否为纯数字(不包含符号或小数点),可以使用以下正则表达式: ```java public static boolean isNumeric(String str) { Pattern pattern = Pattern.compile("\\d*"); return pattern.matcher(str).matches(); } ``` 该方法适用于判断 `"12345"` 这类纯数字字符串,但不适用于负数或浮点数。 ### 3.4 使用 `String.matches()` 方法判断数字 可以通过 `String.matches()` 方法直接判断字符串是否匹配数字格式: ```java public final static boolean isNumeric(String s) { if (s != null && !s.trim().isEmpty()) { return s.matches("^\\d*$"); } else { return false; } } ``` 该方法适用于判断字符串是否为纯数字,但不支持负数或小数[^2]。 ### 3.5 使用 ASCII 码判断数字 可以通过检查字符的 ASCII 值是否在数字字符范围内(48 到 57)来判断字符串是否为数字: ```java public static boolean isNumeric(String str) { for (int i = str.length(); --i >= 0; ) { int chr = str.charAt(i); if (chr < 48 || chr > 57) { return false; } } return true; } ``` 该方法与第一种方法类似,适用于纯数字字符串,不适用于负数或小数。 ### 3.6 使用 `StringUtils.isNumeric()` 判断数字 可以使用 Apache Commons Lang 提供的 `StringUtils.isNumeric()` 方法,该方法能够判断字符串是否为纯数字,但不支持负号或小数点: ```java import org.apache.commons.lang3.StringUtils; public class NumberDemo { private static boolean isNumber(String str) { return StringUtils.isNumeric(str); } } ``` 该方法适用于 `"12345"`,但对 `"-123"` 或 `"123.45"` 返回 `false`[^3]。 ### 3.7 综合判断支持小数和负数的字符串 如果需要支持小数和负数,可以使用更复杂的正则表达式: ```java public static boolean isDecimal(String str) { return str.matches("^[-+]?\\d+(\\.\\d+)?$"); } ``` 该方法能够识别 `"123"`、`"-456"`、`"+789"` 和 `"123.45"` 等格式的字符串。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值