如何从Java中的特定索引获取关键字

时间:2016-05-22 01:29:14

标签: java string character indexof

假设我有一个字符串:

String advise = "eat healthy food";

在字符串中我只知道关键字“健康”。我不知道这个词之前有什么,也不知道之后的是什么。我只知道中间词。那么我怎样才能得到“健康”之前的“吃”(“吃”)和之后(“食物”)关键词?

注意:这里中间单词的大小总是特定的,但另外两个单词的大小总是不同的。这里仅以“吃”和“食物”为例。这两个词可能随时都有。

我需要将这两个单词分成两个不同的字符串,而不是在同一个字符串中。

3 个答案:

答案 0 :(得分:0)

只需拆分字符串: advise.split("健康&#34); 数组中的第一个值将是" eat",第二个值将是" food"。

答案 1 :(得分:0)

这是一个更通用的解决方案,可以处理更复杂的字符串。

public static void main (String[] args)
{
    String keyword = "healthy";

    String advise = "I want to eat healthy food today";

    Pattern p = Pattern.compile("([\\s]?+[\\w]+[\\s]+)" + keyword + "([\\s]+[\\w]+[\\s]?+)");
    Matcher m = p.matcher(advise);

    if (m.find())
    {
        String before = m.group(1).trim();
        String after = m.group(2).trim();

        System.out.println(before);
        System.out.println(after);
    }
    else
    {
        System.out.println("The keyword was not found.");
    }
}

输出:

  

     

食品

答案 2 :(得分:0)

我认为您可以使用拆分并根据需要单独获取所有单词。

String advise = "eat healthy food";
String[] words = advise.split("healthy");
List<String> word = Arrays.asList(words);
word.forEach(w-> System.out.println(w.trim()));