如何在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
相关产品推荐
相关产品推荐

