我想知道一个字符串是否是一个精确的单词,但是例如我是这样做的:
String s1="Welcome";
String s ="Welcomes to Tutorialspoint.com";
System.out.println(s.contains(s1));
它返回true,但我希望你给我一个假的,因为在变量s
中有Welcomes
而不是Welcome
的单词s1
。
我该怎么办?
答案 0 :(得分:10)
您可以使用
Arrays.asList(s.split("\\s+")).contains(s1)
您可以通过调整用于拆分的正则表达式来修改此解决方案以满足您的需求。例如,如果你想拆分任何不是单词字符的东西(例如标点符号和诸如标点符号),你可以使用\W+
。
答案 1 :(得分:3)
将`.matches()`与以下正则表达式一起使用:
System.out.println(s.matches(".*\\b" + s1 + "\\b.*"));
有关详细信息,请参阅this tutorial和this question。
另外,如果你想忽略大小写,你可以这样做:
System.out.println(s.toUpperCase().matches(".*\\b" + s1.toUpperCase() + "\\b.*"))
答案 2 :(得分:2)
您可以拆分句子,然后将每个单词与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
}
}
答案 3 :(得分:1)
你可以尝试
s.matches(".*\\b" + s1 + "\\b.*")
使用"\\b"
查找字边界。
答案 4 :(得分:0)
使用StringTokenizer将字符串标记为组成单词。然后将每个单词与s1进行比较。
答案 5 :(得分:0)
对于比使用简单的String解析和/或正则表达式更高级的东西,您可以查看Lucene parses and analyses文本的方式。
我怀疑它比你需要的更多,并且它增加了一个依赖来做一些在你的情况下非常简单的事情。