• 手把手教你5种方法实现Java判断字符串是否为数字


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

    方法一通过遍历字符串的每一个字符,并使用Character.isDigit()函数检查每一个字符是否是数字。如果字符串中所有字符都是数字,那么这个方法就会返回true。但是,如果字符串中含有非数字字符,它就会立即返回false

    这种方法简洁明了,但可能过于严格,因为它认为像"123 "这样的字符串(末尾包含空格)不是数字。


     

    方法二:
    /*
    * 判断是否为整数

    * @param str 传入的字符串
    * @return 是整数返回true,否则返回false
    */
    public static boolean isInteger(String str) {
    Pattern pattern = Pattern.compile("^[-\+]?[\d]*$");
    return pattern.matcher(str).matches();
    }

    方法二通过正则表达式检查字符串是否只包含数字。它匹配所有以正则表达式["^[-+]?[\d]*$"]开始的字符串,这个正则表达式表示字符串的开始可以是正负号,后面跟随任意数量的数字。但是,它认为像"123 "这样的字符串是整数,而实际上" "不是数字的一部分。


     

    方法三:FuncGPT(慧函数)自动生成
    package com.feisuanyz.function;

    import com.feisuanyz.flow.core.cmpt.annotation.function.MethodDesc;

    import com.feisuanyz.flow.core.cmpt.annotation.function.ParamDesc;

    public class StringNumberChecker {

       

    @MethodDesc(desc = "判断字符串是否为数字",

    params = {

    @ParamDesc(name = "str", desc = "要判断的字符串"),

    })

    public static boolean isNumeric(String str) {

            if (str == null || str.isEmpty()) { // 检查字符串是否为空

                return false;

            }

            try {

                Double.parseDouble(str); // 使用Double.parseDouble()方法尝试将字符串转换为double

                return true; // 转换成功,字符串是数字

            } catch (NumberFormatException e) {

                return false; // 转换失败,字符串不是数字

            }

        }

    }

    方法三使用Double.parseDouble()方法尝试将字符串转换为双精度浮点数。转换成功,说明字符串是数字,返回true;转换失败,说明字符串不是数字,返回false。

    这个代码段包括一个注解 @MethodDesc,用于描述这个方法的一些信息,包括它的描述(desc)和参数(params)。参数描述也是一个数组,其中每个元素都有一个名字(name)和描述(desc)。这种注解通常用于生成API文档或者用于某些IDE的代码提示功能。

    这个 isNumeric 方法的设计思路是合理的,可以满足大部分场景的需求。但是,需要注意的是,由于 Double.parseDouble() 方法可以将诸如 "3.14" 这样的字符串解析为有效的浮点数,因此,该方法可能对于严格意义上的“数字”定义有些宽松。如果你需要更精确的定义(例如,只接受整数值或者只接受具有特定小数位数的浮点数),你可能需要自定义一个更复杂的方法来检查字符串。

    总的来说,这是一个简单、明了的方法,可以有效地检查一个字符串是否可以解析为数字。

    方法四:
    public final static boolean isNumeric(String s) {
    if (s != null && !"".equals(s.trim()))
    return s.matches("^[0-9]*$");
    else
    return false;
    }

    方法四首先检查字符串是否为空或者只包含空格,如果满足条件则返回false。然后它使用Stringmatches()方法检查字符串是否符合正则表达式"^[0-9]*$",这个正则表达式表示字符串仅由0-9的数字组成。这个方法考虑了空字符串和空格,但在遇到像"123 "这样的字符串时,仍然会认为是数字。


    方法五:用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;
    }

    这个方法通过检查字符串中每个字符的ASCII码来判断是否为数字。如果字符的ASCII码不在48'0')和57'9')之间,它就立即返回false。这种方法非常简洁,但也非常严格,它将认为像"123 "这样的字符串不是数字,尽管" "是数字的一部分。

    综上,这些方法都有其优点和缺点,选择哪种方法取决于你的具体需求和对"数字"的定义。

    FuncGPT(慧函数)是全栈式自动开发工具SoFlu软件机器人上线的最新功能,专注于AI生成Java函数,通过自然语言描述Java函数需求,实时生成高质量、高可读性的Java函数代码。生成代码可直接复制到IDEA,或一键导入Java全自动开发工具函数库。现已免费开发使用,链接:https://suo.im/9mqRb

  • 相关阅读:
    华为eNSP配置专题-NAT的配置
    Mybatis入门&Mapper开发&注解开发
    Gateway实现Redis拉取信息+用户模块开发
    多线程入门
    Spring Data Jpa 实现批量插入或更新
    C#在.NET Windows窗体应用中使用LINQtoSQL
    基于BP神经网络的非线性函数拟合(一维高斯函数)研究-含Matlab代码
    axios的各种请求方法
    Js手写面试题5-Promise
    SpringBoot用kafka.listener监听接受Kafka消息
  • 原文地址:https://blog.csdn.net/CalEx_Tech/article/details/133139052