在字符串中搜索子字符串

时间:2019-05-19 12:02:23

标签: java string search substring string-search

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

我想知道一种好/好方法。

Str是我要搜索的字符串,“ Dog”是我要搜​​索的单词,%是行分隔符。

我已经有了阅读器,解析器以及如何保存该文件。如果有人找到我一个简单的搜索方式,我将不胜感激。我可以做到,但是我认为这太复杂了,而实际的解决方案却很容易。

我曾考虑过搜索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"

预期输出:

  

我的狗在哪儿,约翰? //你的狗在桌子上//祝你好运   狗”

2 个答案:

答案 0 :(得分:1)

您可以使用:

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

给出:

  

我的狗在哪儿,约翰? //您的狗在桌子上//有一只好狗


  1. 在这里,使用%
  2. 将字符串拆分为一个数组
  3. 过滤数组以检查 split 语句是否 是否包含“狗”。
  4. 使用//将结果字符串连接成一个字符串。

答案 1 :(得分:0)

尝试此代码。

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

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);
 }