我正在编写一段代码来查找文本中的国家/地区名称。我使用的国家名称的字典表示India, America, Sri Lanka, ...
。我目前使用text.contains(key)
与key
从字典中。但是,即使对于像Indiana
这样的字符串,这也会返回true。我尝试将句子中的单词放在数组中,然后执行包含,类似的方法可以用equals来考虑,但它们确实很慢。还有其他更快的方式可以想到吗?使用Java在句子中查找确切单词
2
A
回答
9
尝试使用word boundary类\b
s.matches(".*\\b" + key + "\\b.*")
0
应该已经工作。您也可以尝试String.indexOf(String)
。如果它返回的值不是-1,则该查询字符串存在于该字符串中,否则不存在。
1
也许你应该使用一些文本处理库。
这里是一个正则表达式的解决方案:
import java.util.regex.*;
import static java.lang.System.*;
public class SO {
public static void main(String[] args) {
String[] dict={"india","america"};
String patStr=".*\\b(" + combine(dict,"|") + ")\\b.*";
out.println("pattern: "+patStr+"\n");
Pattern pat=Pattern.compile(patStr);
String input1="hello world india indiana";
out.println(input1+"\t"+pat.matcher(input1).matches());
String input2="hello world america americana";
out.println(input2+"\t"+pat.matcher(input2).matches());
String input3="hello world indiana amercana";
out.println(input3+"\t"+pat.matcher(input3).matches());
}
static String combine(String[] s, String glue){
int k=s.length;
if (k==0) return null;
StringBuilder out=new StringBuilder();
out.append(s[0]);
for (int x=1;x<k;++x)
out.append(glue).append(s[x]);
return out.toString();
}
}
输出:
pattern: .*\b(india|america)\b.*
hello world india indiana true
hello world america americana true
hello world indiana amercana false
相关问题
- 1. 在Excel中从一个句子中查找多个确切单词
- 2. 使用Java查找单词
- 3. 如何从句子中找到确切词
- 4. 仅使用SphinxQL查找确切单词maches
- 5. 如何在C#中使用Open XML查找word文档中的确切单词?
- 6. 在属性字符串中查找确切单词的方法
- 7. preg_replace在句子中的“单词”和“单词”。在句子结尾
- 8. 在1500万字的语料库中查找单词的句子
- 9. 在句子中查找单词的出现
- 10. Jquery - 在句子中查找单词并添加范围
- 11. 找到句子中的单词数
- 12. 查找字符串中的确切单词
- 13. 的Python:找到确切的单词
- 14. 查找标签之间的确切词
- 15. 查找MIPS程序集中的句子中的每个单词
- 16. 句子/单词
- 17. 句子中的延长单词检查
- 18. 用句子找关键词
- 19. 使用grep匹配确切的单词
- 20. 确切使用单词替换阵列
- 21. 使用SQLite“like”子句查找类似词语的SQLite查询
- 22. 用iTextSharp在句子中加粗单词
- 23. Java使用堆栈来翻转一个句子中的单词
- 24. 递归查找一个句子中最长的单词
- 25. 在使用Java的句子中查找回文类型
- 26. 在Linux中匹配确切的单词
- 27. 在C++中查找单词
- 28. 在UIwebview中查找单词
- 29. 在句子中与句子匹配的确切单词和形成一个数据帧
- 30. 在java中使用正则表达式匹配确切词
你为什么不张贴你考虑慢的代码的相关部分?理解你在做什么并帮助你改进它会更容易。 –
'contains()'返回真正的部分匹配,你可能已经发现了。但是你怎么确定'equals()'比'contains()'慢呢?可能是我不明白你的问题。 – asgs
为什么不使用正则表达式? –