Java String.contains()来处理自然数

时间:2014-02-04 14:21:49

标签: java regex string integer

我是一名学习Java的计算机科学专业的学生,​​作为一项练习,我们正在进行排列算法。

现在,我陷入了一个需要在字符串中搜索自然数字的点,用逗号分隔:

String myString = "0,1,2,10,14,";

问题是我正在使用......

myString.contains(String.valueOf(anInteger);

...检查是否存在特定号码。这适用于从0到9的数字,但是当查找超过1位数的数字时,程序不会将其识别为自然数。

换句话说,作为一个例子:“14”不是整数14,它只是一个带有“1”和“4”的字符串;所以,如果我跑...

String myString = "0,1,2,10,14,";
if (myString.contains(myString.valueOf(4))) { doSomething(); }

...“if”语句将为true,因为字符串中存在整数“4”,作为自然数“14”的一部分。

此时,我一直在通过StackOverflow和其他页面搜索解决方案,并了解到我应该使用Pattern和Matcher。

我的问题是:使用它们的最佳方法是什么?

我的代码的相关部分:

for (int i = 0; i<r; i++)
    {
    if (!act.contains(String.valueOf(i)))
        {
        ...
        }
    ...
    }

我在我的代码中多次使用此方法,因此确切的替换会很好。

提前谢谢大家!

5 个答案:

答案 0 :(得分:1)

了解如何将String拆分为String数组。所以:

String[] splitStrings = myString.split(",")
ArrayList<Integer> parsedInts = new ArrayList<Integer>();

for (String str : splitStrings) {
  parsedInts.add(Integer.parseInt(str));
}

然后在你的for循环中:

if (parsedInts.contains(i)) {
  // body
}

答案 1 :(得分:1)

您只需要调用matches()的方法:

if (myString.matches(".*\\b" + anInteger + "\\b.*"))
    // string contains the number

这可以通过创建在目标数字的任一端具有单词边界(\b)的正则表达式来使用。前导.*是必需的,因为matches()必须与整个字符串匹配才能返回true。

答案 2 :(得分:0)

这样的事情:

    String myString = "0,1,2,10,14,";
    String[] split = myString.split(",");
    for (String string : split) {
        int num = Integer.parseInt(string);
        if (num == 4) {
            System.out.println(num);
            // ...
        }
    }

答案 3 :(得分:0)

  String myString = "0,1,2,10,14,2323232";
   String[] allList = myString.split(",");
    for (String string : allList) {
         if(string.matches("[0-9]*"))
         {
             System.out.println("Its number with value "+string);
         }
    }

答案 4 :(得分:0)

我认为您需要选择给定字符串中的所有数字并找到排列。

我认为您需要使用逗号分隔符对给定字符串进行标记 当我执行这样的程序时,我将我的逻辑划分为解析String并在另一个方法中编写逻辑。以下是摘录

String myString = "0,1,2,10,14,";
StringTokenizer st2 = new StringTokenizer(myString , ",");

while (st2.hasMoreElements()) {
    doSomething(st2.nextElement());
}