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

26次阅读

共计 2350 个字符,预计需要花费 6 分钟才能阅读完成。

办法一:用 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。而后它应用 String 的 matches()办法查看字符串是否合乎正则表达式 ”^[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 全自动开发工具函数库。现已收费开发应用,链接:http://suo.im/bGXp7

正文完
 0