You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测字符串是否包含非数字内容?

检测字符串是否包含非数字内容的Java实现

针对你需要的「若字符串包含非数字内容则关闭Bukkit服务器」的逻辑,以下是几种可行的实现方式:

方法一:使用正则表达式(推荐简洁写法)

通过正则匹配整个字符串是否仅由数字组成,若不匹配则说明存在非数字字符:

String argsstring = args[0].toString();
// 判断字符串是否不全为数字,若是则关闭服务器
if (!argsstring.matches("\\d+")) {
    Bukkit.shutdown();
}
  • 说明:\\d+ 匹配一个或多个0-9的数字,matches() 会检查整个字符串是否符合该规则。
  • 若需要支持负数(如 -123),可将正则改为 "-?\\d+",同时注意单独的 - 会被判定为非数字,可额外处理:
    if (!argsstring.matches("-?\\d+") || argsstring.equals("-")) {
        Bukkit.shutdown();
    }
    

方法二:逐个字符遍历检查

适合不想使用正则的场景,手动遍历每个字符判断是否为数字:

String argsstring = args[0].toString();
boolean hasNonDigit = false;

for (char c : argsstring.toCharArray()) {
    if (!Character.isDigit(c)) {
        hasNonDigit = true;
        break;
    }
}

if (hasNonDigit) {
    Bukkit.shutdown();
}
  • 若支持负数,需跳过开头的负号:
    String argsstring = args[0].toString();
    boolean hasNonDigit = false;
    int startIdx = argsstring.startsWith("-") ? 1 : 0;
    
    if (argsstring.equals("-")) {
        hasNonDigit = true;
    } else {
        for (int i = startIdx; i < argsstring.length(); i++) {
            if (!Character.isDigit(argsstring.charAt(i))) {
                hasNonDigit = true;
                break;
            }
        }
    }
    
    if (hasNonDigit) {
        Bukkit.shutdown();
    }
    

方法三:借助工具类(需引入依赖)

如果你的项目中已经引入了Apache Commons Lang库,可以使用现成的工具方法:

import org.apache.commons.lang3.StringUtils;

// ...

String argsstring = args[0].toString();
if (!StringUtils.isNumeric(argsstring)) {
    Bukkit.shutdown();
}
  • 说明:StringUtils.isNumeric() 会检查字符串是否全为数字字符,包括Unicode数字,但同样不支持负号,需额外处理负数场景。

内容的提问来源于stack exchange,提问作者vitekform

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 11:12:43