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

标签 java string

如何检查字符串是否包含特定范围内的数字,例如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");
    }
}

最佳答案

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

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;
    }
}

你的方法可能应该返回一个 boolean 值,而不是打印结果:

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);

关于java - 如何检查字符串是否包含特定范围内的数字,例如java中的11到26,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50579956/

相关文章:

c# - 如何从名称集合构建字符串

java - 为什么这会返回错误的模数答案?

Java sql更新数据库中的行

java - 有没有一种众所周知的方法来实现多个 RSS 提要的分页?

sql - 连接来自 Teradata SQL 中多条记录的字符串

regex - PowerShell Select-String from file with Regex

Java String.toUpperCase()

java - Android:显示来自互联网的 .gif

c++ - 打印较大的字符串 C++ 时出现问题

java - JPanel 和 Frame 之间的默认彩色间距