繁体   English   中英

如何在java String中查找指定单词之后的单词

[英]How to Find the word that comes after a specified word in java String

我的程序输入了一个字符串,例如。 你好我是约翰你是谁哦所以我知道你也是约翰我很高兴

然后我的程序输入了一个关键字,例如。 i(程序还不喜欢大写或标点符号)

然后它读取初始字符串并找到它提到关键字+关键字后面的单词的所有时间,例如。 我是,我明白了,我是。

这就是找到最常见的出现并将第二个单词作为新关键字输出并重复。 这将产生 i am john/happy (当第二个单词出现相同时,它会停止(它意味着))

我想知道的是如何在关键字后面找到这个词。

package main;

import java.util.Scanner;

public class DeepWriterMain {

    public static void main(String[] args) {
    
        String next;
        Scanner scanner = new Scanner(System.in);
        System.out.println("text:");
        String input = scanner.nextLine();
        System.out.println("starting word:");
        String start = scanner.nextLine();
        input.toLowerCase();
        start.toLowerCase();
        if (input.contains(start)) {
             System.out.println("Loading... (this is where i find the most used word after the 'start' variable)");
             next = input.substring(5, 8);
             System.out.println(next);
         }else {
             System.out.println("System has run into a problem");
         
         }
    }

}

如果使用split将所有单词拆分成一个数组,则可以遍历数组查找关键字,如果不是数组中的最后一个,则可以打印下一个单词

String arr [] = line.split(" ");
for (int i = 0; i < arr.length -1; i++) {
    if (arr[i].equalsIgnoreCase(keyword)) {
       sop(arr[i] + " " arr[i + 1]);
    
} 
  • 如果它不是数组中的最后一个,则仅迭代到 length - 1

String 类包含一个名为public int indexOf(String str)的方法。 您可以按如下方式使用它:

int nIndex = input.indexOf(start) + start.length()

然后,您只需要在start不在输入字符串中的情况下检查nIndex == -1是否。 否则,它会为您提供后面单词的第一个字符的位置。 使用相同的indexOf方法查找下一个空间提供了结束索引。

这将允许您避免通过输入进行线性搜索,尽管 indexOf 方法可能无论如何都会这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM