如何使用Java检查句子中是否存在单词?

2022-09-01 08:11:49

我是编程和处理函数的新手,如果句子中存在单词,则返回true。我尝试了这种方法,但后来我也遇到了这种方法的某个问题:indexOf()

假设我的句子是I am a, Java Programmer.

如果我们用该方法查找单词,那么它将返回,因为存在,而正确的输出应该是不是作为单词存在而是作为模式存在。ramindexOf()trueramProgrammerfalseram

如何变通解决此问题?截至目前,我正在使用的代码是:

boolean isPresent(String word, String sentence)
{
    if(sentence.indexOf(word) >= 0)
        return true;
    else
        return false;
}

注意:这个词只是一个例子,表明了我目前的方法的一个问题。这并不是说我必须一直与之合作。这个词可以是任何像说,在上面的句子中后跟一个逗号。ramrama

更新:感谢大家提供他们的意见和解决方案。我选择了一个作为可接受的答案(如果允许的话,我会选择更多:-)),但很多都很有帮助。


答案 1

尝试正则表达式

boolean contains = s.matches(".*\\bram\\b.*");

\b 表示单词边界


答案 2

由于您要搜索单词,因此有三种情况:

  1. 句子开头的单词表示开头没有空格,结尾没有空格。
  2. 两端句子空间之间的单词。
  3. 单词在末尾只有空格在末尾。

为了涵盖所有这三种情况,一种可能的解决方案是:

String str = "I am a JAVA programmer";
String[] splited = str.split("\\b+"); //split on word boundries
Arrays.asList(splited).contains("ram"); //search array for word

这是工作演示


推荐