有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何检查字符串是否包含特定范围的数字,例如java中的11到26

如何检查字符串是否包含特定范围的数字,例如java中的11到26:例如:

public void checkStringForNumbers(){
    String str = "Green (Low): 20"
    if(String.valueOf(str).contains(numbers between 11 to 26)==true){
        System.out.println("I got 11 to 26 string");
    } else {
        System.out.println("I got a different value range");
    }
}

共 (1) 个答案

  1. # 1 楼答案

    如果字符串只有一个数字,则可以使用正则表达式查找、解析并检查其是否在范围内:

    String s = "Green (Low): 20";
    Matcher m = Pattern.compile("[-+]?\\d+").matcher(s);
    if (m.find())
        int number = Integer.parseInt(m.group());
        if (number <= 26 && number >= 11) {
            System.out.println("Contains number between 11 and 26!");
        } else {
            System.out.println("Contains number but not between 11 and 26!");
        }
    } else {
        System.out.println("Contains no numbers");
    }
    

    如果字符串中有多个数字,并且要检查其中任何一个是否在范围内,请使用循环:

    String s = "Green (Low): 20";
    Matcher m = Pattern.compile("[-+]?\\d+").matcher(s);
    while (m.find()) {
        int number = Integer.parseInt(m.group());
        if (number <= 26 && number >= 11) {
            System.out.println("Contains number between 11 and 26!");
            break;
        }
    }
    

    您的方法可能会返回布尔值,而不是打印结果:

    static boolean hasNumberInRange(String s) {
        Matcher m = Pattern.compile("[-+]?\\d+").matcher(s);
        while (m.find()) {
            int number = Integer.parseInt(m.group());
            if (number <= 26 && number >= 11) {
                return true;
            }
        }
        return false;
    }
    

    正如Anton Balaniuc所建议的,您可以在Java 9中执行此操作:

    return Pattern.compile("[-+]?\\d+").matcher(s).results()
           .map(MatchResult::group)
           .map(Integer::parseInt)
           .anyMatch(n -> n >= 11 && n <= 26);