0
点赞
收藏
分享

微信扫一扫

Java 判断String类型的数据str是否为数字 怎么判断

在 Java 中,有多种方法可以判断一个 String 类型的数据 str 是否为数字。以下是几种常见的方法:

方法一:使用正则表达式

使用正则表达式是判断字符串是否为数字的一种简洁方式。以下是一个示例代码:

 public class Main {
 
     public static void main(String[] args) {
 
         String str = "12345";
 
         boolean isNumber = str.matches("-?\\d+(\\.\\d+)?");
 
         System.out.println("Is number: " + isNumber);
 
     }
 
 }

在这个示例中,正则表达式 -?\\d+(\\.\\d+)? 可以匹配:

  • 可选的负号(-
  • 一组或多组数字(\\d+
  • 可选的小数部分((\\.\\d+)?

方法二:使用 try-catch 块和 Double.parseDouble 或 Integer.parseInt

你可以尝试将字符串解析为数字,并捕获可能抛出的异常来判断是否为数字。这种方法对于处理整数和小数都适用。

 public class Main {
 
     public static void main(String[] args) {
 
         String str = "12345.67";
 
         boolean isNumber = isNumeric(str);
 
         System.out.println("Is number: " + isNumber);
 
     }
 
  
 
     public static boolean isNumeric(String str) {
 
         try {
 
             double d = Double.parseDouble(str);
 
             return true;
 
         } catch (NumberFormatException e) {
 
             return false;
 
         }
 
     }
 
 }

注意:这个方法可以处理整数和小数,但如果你只需要判断整数,可以将 Double.parseDouble 替换为 Integer.parseInt

方法三:使用 Apache Commons Lang 库

如果你在使用 Apache Commons Lang 库,那么你可以使用 NumberUtils.isDigits 或 NumberUtils.isCreatable 方法来判断字符串是否为数字。

 import org.apache.commons.lang3.math.NumberUtils;
 
  
 
 public class Main {
 
     public static void main(String[] args) {
 
         String str = "12345.67";
 
         boolean isNumber = NumberUtils.isCreatable(str);
 
         System.out.println("Is number: " + isNumber);
 
     }
 
 }

NumberUtils.isCreatable 方法不仅可以判断整数,还可以判断小数和科学计数法表示的数值。

方法四:手动检查字符

你可以手动遍历字符串,检查每个字符是否为数字字符。

 public class Main {
 
     public static void main(String[] args) {
 
         String str = "12345";
 
         boolean isNumber = isNumeric(str);
 
         System.out.println("Is number: " + isNumber);
 
     }
 
  
 
     public static boolean isNumeric(String str) {
 
         if (str == null || str.isEmpty()) {
 
             return false;
 
         }
 
         for (char c : str.toCharArray()) {
 
             if (!Character.isDigit(c) && c != '.') {
 
                 return false;
 
             }
 
         }
 
         // Optional: if you want to exclude strings like ".." or start/end with "."
 
         if (str.indexOf('.') != -1 && !(str.startsWith(".") ^ str.endsWith("."))) {
 
             String[] parts = str.split("\\.");
 
             return parts.length <= 2 && parts[0].length() > 0 && (parts.length == 1 || parts[1].length() > 0);
 
         }
 
         return true;
 
     }
 
 }

这个方法需要你手动处理小数点的情况,以避免接受不合法的数值,比如连续的小数点或只有小数点的字符串。

总结

根据具体需求选择最适合的方法。如果需要处理整数和小数,建议使用正则表达式或 try-catch 块;如果已在使用 Apache Commons Lang 库,那么使用库中的方法会更方便。

举报

相关推荐

0 条评论