当前位置: 首页 > 知识库问答 >
问题:

如何让用户知道特定关键字在句子中的单词(例如,这是第三个单词)

长孙阳泽
2023-03-14

我正在制作一个聊天机器人,需要能够计算用户输入的单词数,然后才能找到他们的关键字。

我已经能够计算字符串中的单词总数,但不能计算单词之前的单词。

用户输入“count”,激活wordcount方法。提示他们键入一个句子,然后键入一个关键字在句子中查找。程序输出关键字在句子中是什么词(例如这是第3个词)。

我已尝试使用for循环遍历字符并查找空格,但for循环中的if不会激活:

对于(int i=psn-1;i

if(短语.charAt(i)==“”){//if1

空格=空格1;

private int findKeyword(String statement, String goal, int startPos) {
        String phrase = statement.trim().toLowerCase();
        goal = goal.toLowerCase();

        int psn = phrase.indexOf(goal, startPos);


        while (psn >= 0) {
            // Find the string of length 1 before and after
            // the word
            String before = " ", after = " ";
            if (psn > 0) {
                before = phrase.substring(psn - 1, psn);
                // System.out.println("If 1 at "+psn);
            }
            if (psn + goal.length() < phrase.length()) {
                after = phrase.substring(psn + goal.length(), 
                          psn + goal.length() + 1);
                System.out.println("If 2 at " + psn);
            }

            // If before and after aren't letters, we've
            // found the word
            if (((before.compareTo("a") < 0) || 
                        (before.compareTo("z") > 0)) // before is not a
                                                                                //
                    && ((after.compareTo("a") < 0) || 
 (after.compareTo("z") > 0))) {
                System.out.println("If 3 at " + psn);
                return psn;
            }
//
            // The last position didn't work, so let's find
            // the next, if there is one.
            psn = phrase.indexOf(goal, psn + 1);

        }

        return -1;
    }


我正在制作一个聊天机器人,需要能够计算用户输入的单词数,然后才能找到他们的关键字。

我已经能够计算字符串中的单词总数,但不能计算单词之前的单词。

(例如,你的单词是句子中的第三个单词)

共有2个答案

廉高邈
2023-03-14

更好的方法可能是简单地将句子字符串拆分为空格字符,然后在结果列表中获取关键字的索引。

示例:

String[] split = sentence.split(" ");
int numberOfWordsBeforeKeyword = Arrays.asList(split).indexOf(keyword);
华哲茂
2023-03-14

通过使用String.split(),您可以更轻松地实现您想要的目标。例如:

String[] words = statement.split(" "); // array of words that are separated by a space
for (int i = 0; i < words.length; i++){
    if (words[i].equals(goal))
        System.out.println("word found in "+i+" words);
}
 类似资料:
  • 我实际上是一个新手到Java,并试图做一个小项目。所以,在我的项目中,我想让用户输入一个句子,我想让程序在句子中搜索特定的单词,并基于此给出输出。我使用NetBeans开发我的应用程序。 我的代码是这样的 我知道这段代码没有意义,也不会运行,但我这样说是为了让人们对我试图实现的目标有一个大致的了解。 请帮帮我.

  • 问题内容: 我正在尝试编写一个函数来清理用户输入。 我不是要使其完美。我宁愿用小写字母表示一些名称和缩写,也不愿用大写字母表示完整的段落。 我认为该函数应使用正则表达式,但是我对这些表达式很不好,需要一些帮助。 如果以下表达式后跟一个字母,我想将该字母大写。 更好的是,该函数可以在“。”,“!”之后添加一个空格。和“?” 如果这些后面跟有一封信。 如何做到这一点? 问题答案: 由于PHP 5.5.

  • 我一直在使用Stanford POS Tagger标记句子中的词性。我从stackoverflow上的留档和其他问题中学到的是,下面的代码给出了句子的POS标记 但我想要的是获得单个单词的POS标签。一种可能的方法是分解输入字符串并逐字逐句地向Tagger提供输入,但它似乎并不优雅,我认为它增加了出错的机会。Javadoc说应用函数可以返回标记单词的数组列表,但我无法成功调用此函数。任何想法,我怎

  • 本文向大家介绍如何在Java中为特定单词解析字符串中的单词?,包括了如何在Java中为特定单词解析字符串中的单词?的使用技巧和注意事项,需要的朋友参考一下 Java中有多种方法,您可以使用这些方法为特定单词解析字符串中的单词。在这里,我们将讨论其中的3个。 contains()方法 String类的contains()方法接受一个字符序列,并验证它是否存在于当前String中。如果找到,则返回tr

  • 我有一个文本“你好单词”“单词你好”,我如何获得“你好单词”“单词你好”(例如) ''' let string1="Hello Word"让引用String1="Hello Word" let string2="Word Hello"让引用String2="word Hello" '''

  • 我在大学上Java入门课程。我的作业是写一个程序来显示一个句子中1个字母单词的数量,一个句子中2个字母单词的数量...等等。句子是用户输入的。我应该使用一个循环,但不允许使用数组。 然而,现在只是开始,我只是想找出句子第一个单词的字母数。我得到的结果要么是字母数不正确,要么是字符串索引超出范围。 例如,当我输入“这是一个句子”时,它会给我“字符串索引超出范围:4”对此的任何帮助都将不胜感激。