判断字符串是否是数字

本文详细阐述了在Android应用中,如何通过正则表达式确保根据登录返回的数字字符串的有效性,避免首页应用显示失败的情况。重点介绍了使用正则表达式进行非空和非数字字符的判断,确保应用数据正确性和用户体验。
项目中使用到根据登录返回的数字组成的一个字符串,数字使用,进行分割,前台android端根据字符串中的appId进行首页内嵌应用的显示。
由于没有进行对字符串中的数字进行非空和非数字判断,导致首页显示应用无法显示。需进行字符串判断

1使用正则表达式(推荐)

public static boolean isNumeric(String str) {
    Pattern pattern = Pattern.compile("[0-9]*");
    Matcher isNum = pattern.matcher(str);
    if (!isNum.matches()) {
        return false;
    }
    return true;
}
### 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"` 等格式的字符串。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值