我想知道字符串是否是一个精确的单词,但例如,如果我这样做:
String s1="Welcome";
String s ="Welcomes to Tutorialspoint.com";
System.out.println(s.contains(s1));
它返回true,但我希望您返回false,因为在变量s
中,单词Welcomes
而不是s1
的单词Welcome
。如何继续?
您可以使用
Arrays.asList(s.split("\s+")).contains(s1)
您可以通过调整用于拆分的正则表达式来修改此解决方案以满足您的需求。例如,如果你想拆分任何不是单词字符的内容(即标点符号等),你可以使用W+
。
将`.matches()`与以下正则表达式一起使用:
System.out.println(s.matches(".*\b" + s1 + "\b.*"));
有关更多信息,请参阅本教程和此问题。
另外,如果你想忽略案例,你可以这样做:
System.out.println(s.toUpperCase().matches(".*\b" + s1.toUpperCase() + "\b.*"))
您可以拆分句子,然后将每个单词与s1
进行比较。
String s1="Welcome";
String s ="Welcomes to Tutorialspoint.com";
String[] split = s.split(" ");
for (String s : split) {
if (s.equals(s1)) {
System.out.println(s);
break; //optional
}
}
您可以尝试
s.matches(".*\b" + s1 + "\b.*")
使用CCD_ 7来寻找单词边界。
使用StringTokenizer将字符串标记为组成词。然后将每个单词与s1进行比较。
要了解比使用简单的字符串解析和/或正则表达式更高级的内容,您可以看看Lucene是如何解析和分析文本的。
我怀疑这超出了你的需要,而且它增加了一个依赖性来做一些在你的情况下非常简单的事情。