top*_*ard 10 java regex string
如果我在字符串中寻找特定的单词,例如,在字符串"你好吗"我正在寻找"是".常规indexOf()工作得更快更好还是正则表达式匹配()
String testStr = "how are you";
String lookUp = "are";
//METHOD1
if (testStr.indexOf(lookUp) != -1)
{
System.out.println("Found!");
}
//OR
//METHOD 2
if (testStr.match(".*"+lookUp+".*"))
{
System.out.println("Found!");
}
Run Code Online (Sandbox Code Playgroud)
上面两种方法中的哪一种是在另一个字符串中查找字符串的更好方法?还是有更好的选择?
Tim*_*ker 17
如果你不关心它是否真的是你匹配的整个单词,那么indexOf()会更快.
如果,另一方面,你需要能够区分are,harebrained,aren't等等,那么你需要一个正则表达式:\bare\b将只匹配are作为一个完整的单词(\\bare\\b在Java中).
\b 是一个单词边界锚,它匹配字母数字字符(字母,数字或下划线)和非字母数字字符之间的空格.
警告:这也意味着如果你的搜索词实际上不是一个单词(让我们说你正在寻找###),那么这些单词边界锚只会匹配一个字符串aaa###zzz,但不能匹配+++###+++.
进一步警告:默认情况下,Java对于构成字母数字字符的内容有一个有限的世界观.只有ASCII字母/数字(加下划线)算在这里,所以字边界锚将在类的字眼失败élève,relevé或ärgern.在这里阅读更多相关信息(以及如何解决此问题).