在字符串中搜索子字符串

Searching in a string a substring

我有一个字符串 (Str),其中的短语由一个字符分隔(为了简单理解,我们将其定义为“%”)。我想在此字符串 (Str) 中搜索包含单词(如 "dog")的短语,并将该短语放入新字符串

我想知道 good/great 的方法。

Str 是我要搜索的字符串,"Dog" 是我要搜索的词,% 是行分隔符。

我已经有了 reader、解析器以及如何保存该文件。如果有人能帮我找到一种简单的搜索方式,我将不胜感激。我可以做到,但我认为它太复杂了,而实际的解决方案却非常简单。

我曾考虑搜索 lastIndexOf("dog") 并在 Str(0, lastIndexOf("dog") 的子字符串中搜索“%”,然后搜索第二个 % 以获取我正在搜索的行。

P.S:Str 中可能有两个 "dog",我希望所有显示单词 "dog"

的行

示例:

Str = " Where is my dog, john ? % your dog is on the table % really thanks john % you're welcome % Have a nice dog"

预期输出:

Where is my dog, john ? // your dog is on the table // Have a nice dog"

试试这个代码。

解决方案是从“%”拆分,然后检查它是否包含我们需要的确切单词。

public static void main(String []args){

     String str = " Where is my dog, john ? % your dog is on the table % really thanks john % you're welcome % Have a nice dog";

     String[] words = str.split("%");
     String output = "";
     for (String word : words) {
        if (word.contains("dog")) {
            if(!output.equals("")) output += " // ";
            output += word ;
        }
     }
     System.out.print(output);
 }

您可以使用:

String str = "Where is my dog, john ? % your dog is on the table % really thanks john " +
             "% you're welcome % Have a nice dog";

String dogString = Arrays.stream(str.split("%"))            // String[]  
                     .filter(s -> s.contains("dog"))        // check if each string has dog
                     .collect(Collectors.joining("//"));    // collect to one string

给出:

Where is my dog, john ? // your dog is on the table // Have a nice dog


  1. 这里使用%
  2. 将String拆分成数组
  3. 数组过滤,检查是否拆分句 是否包含"dog"。
  4. 使用 //.
  5. 将生成的字符串连接成一个字符串