Java检查String中的int范围

时间:2012-08-27 06:55:27

标签: java string if-statement int

我正在尝试检查字符串中是否存在一系列数字 还有比这更优雅的方式吗?

if (ccnumeric.contains("51")
    || ccnumeric.contains("52")
    || ccnumeric.contains("53")
    || ccnumeric.contains("54")
    || ccnumeric.contains("55"))

我无法想到任何满足此功能的方法,因为我正在检查字符串中的int范围。

4 个答案:

答案 0 :(得分:6)

您可以使用一个简单的正则表达式:5[12345]{1}来查找5后跟一个1,2,3,4或5:

String s = "55";
Pattern p = Pattern.compile("5[12345]{1}");
if (p.matcher(s).find()) {
    System.out.println("Found");
} else {
    System.out.println("Not Found");
}

答案 1 :(得分:1)

也许你可以试试正则表达式。

例如

Pattern.matches( ".*5[1-5].*", ccnumeric );

编辑: 要查找字符串中的所有数字:

List<Integer> allMatches = new ArrayList<Integer>();
Matcher m = Pattern.compile("(\\d+)").matcher(ccnumeric);
while (m.find()) {
   allMatches.add(Integer.parse(m.group()));
}

答案 2 :(得分:0)

您的问题有点模糊,例如字符串“541”,1(541),3(5,4,1),6(5,4,1,54,41,541)中有多少个数字?根据您定义的方式,您的正则表达式会发生很大变化。如果您的答案是1,那么解决方案非常简单,贪婪搜索所有长度与您的最小值相同且小于或等于最大值的数字(然后您可以根据最小值和最大值解析匹配和过滤) ...如果是其中一个,那么你的解决方案会变得有点复杂,你基本上必须创建一个滑动窗口来评估字符串中所有可能的组合。

答案 3 :(得分:0)

我认为你的问题很明确......你是否想检查输入字符串是否包含51-55范围内的数字? (你的书面文字似乎暗示了这一点)在这种情况下,字符串“512是2的幂”将不匹配,因为它不包含数字51.

或者您是否要检查字符串是否包含字符序列51,52,53,54或55? (你的代码似乎暗示了这一点)在这种情况下,字符串“512是2的幂”将匹配,因为它包含字符序列51.

如果第一个选项是这种情况,那么您需要以下内容:

Pattern p = Pattern.compile("(^|[^\\d])5[1-5]($|[^\\d])");
if (p.matcher(inputString).find()) {
    //The inputString contains the number you seek
}

基本上,这样做是为了寻找

  • 字符序列51-55
  • 以字符串的开头或非数字字符
  • 开头
  • 后跟字符串的结尾或非数字字符