如何判断一个字符串是否全部由数字组成?

发布时间:2023-05-11

一、使用Java内置函数实现

对于一个字符串是否全部由数字组成的判断,可以使用Java内置函数实现:

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

使用Character.isDigit()函数遍历字符串中的每一个字符,若不是数字则返回false。如果遍历完整个字符串仍没有返回,说明该字符串全部由数字组成,返回true

二、使用正则表达式实现

除了使用内置函数外,还可以使用正则表达式判断一个字符串是否全部由数字组成:

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

使用Pattern.compile()函数将一个正则表达式编译成一个Pattern对象,[0-9]表示数字,*表示匹配0个或多个数字。使用Matcher.matches()函数将字符串与Pattern匹配,如果匹配成功则返回true,否则返回false

三、使用ASCII码表实现

我们还可以使用ASCII码表判断一个字符串是否全部由数字组成:

public static boolean isNumeric(String str){
    byte[] bytes = str.getBytes();
    for (int i = 0; i < bytes.length; i++) {
        if (bytes[i] < 48 || bytes[i] > 57) {
            return false;//不是数字
        }
    }
    return true;//全是数字
}

将字符串转换成字节数组,然后判断每一个字节是否在ASCII码表的数字范围内。4857表示ASCII码表中的09,如果字符不在该范围内,说明该字符串不是纯数字字符串。

四、总结

以上三种方法都能够判断一个字符串是否全部由数字组成,但在实际开发中需要依据实际情况选择最合适的方法,对于短小的字符串,使用内置函数更为合适;对于大量的字符串,使用ASCII码表方法更为高效;对于复杂的字符串,使用正则表达式方法能够方便地实现高度可定制化。