我是一名学习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)))
{
...
}
...
}
我在代码中多次使用了此方法,因此完全可以替代。
谢谢大家!
最佳答案
您只需要对matches()
的方法调用:
if (myString.matches(".*\\b" + anInteger + "\\b.*"))
// string contains the number
通过创建在目标编号的任一端都具有单词边界(
\b
)的正则表达式来使用此功能。前导和尾随的.*
是必需的,因为matches()
必须与整个字符串匹配才能返回true。