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

如何在Java中检查字符串是否包含指定范围(如11-26)的数字

如何在Java中检查字符串是否包含11至26范围内的数字

直接用String.contains()方法没法实现你的需求——因为它只能匹配固定的子串,没办法判断数字是否落在某个区间里。我们需要先从字符串中提取数字,再检查这些数字是否在11到26之间,下面是两种实用的解决方案:

方案一:提取所有数字并逐一判断(适用于多数字场景)

如果你的字符串里可能包含多个数字,这个方法会遍历所有数字并检查是否有符合条件的:

public void checkStringForNumbers() {
    String str = "Green (Low): 20";
    // 正则表达式匹配所有连续的数字序列
    Pattern pattern = Pattern.compile("\\d+");
    Matcher matcher = pattern.matcher(str);
    
    boolean hasTargetNumber = false;
    // 遍历所有匹配到的数字
    while (matcher.find()) {
        int num = Integer.parseInt(matcher.group());
        // 检查是否在目标区间内
        if (num >= 11 && num <= 26) {
            hasTargetNumber = true;
            break; // 找到符合条件的数字就提前退出循环
        }
    }
    
    if (hasTargetNumber) {
        System.out.println("I got 11 to 26 string");
    } else {
        System.out.println("I got a different value range");
    }
}

这个方法的核心是用\d+正则匹配所有连续数字,把每个匹配结果转成整数后判断范围,只要有一个数字符合条件就返回目标结果。

方案二:提取单个数字判断(适用于单数字场景)

如果你的字符串里只会有一个数字(就像示例中的情况),可以用更简洁的方式:

public void checkStringForNumbers() {
    String str = "Green (Low): 20";
    // 移除所有非数字字符,得到纯数字字符串
    String numStr = str.replaceAll("[^0-9]", "");
    
    if (!numStr.isEmpty()) {
        int num = Integer.parseInt(numStr);
        if (num >= 11 && num <= 26) {
            System.out.println("I got 11 to 26 string");
        } else {
            System.out.println("I got a different value range");
        }
    } else {
        System.out.println("No numbers found in the string");
    }
}

注意:这个方法只适合字符串中只有一个数字的情况,如果有多个数字(比如"15 and 30"),replaceAll会把所有数字拼接成一个字符串(变成"1530"),导致判断错误,这种情况请用方案一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:45:18