[英]How to check if the string contains numbers from a specific range, for eg from 11 to 26 in java
How to check if the string contains numbers from a specific range, for eg from 11 to 26 in java: For example: 如何检查字符串是否包含特定范围内的数字,例如在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");
}
}
If your string has only one number, you can use a regex to find it, parse it, and check if it is in 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");
}
If you have multiple numbers in the string and what to check if any of them is in range, use a loop: 如果字符串中有多个数字,并且要检查其中是否有一个数字在范围内,请使用循环:
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;
}
}
Your method should probably return a boolean instead of printing the result out: 您的方法可能应该返回一个布尔值,而不是将结果打印出来:
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;
}
As Anton Balaniuc suggested, you can do this in Java 9: 正如Anton Balaniuc所建议的,您可以在Java 9中执行此操作:
return Pattern.compile("[-+]?\\d+").matcher(s).results()
.map(MatchResult::group)
.map(Integer::parseInt)
.anyMatch(n -> n >= 11 && n <= 26);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.