Поиск в строке подстроки - PullRequest
0 голосов
/ 19 мая 2019

У меня есть строка (Str) с фразами, разделенными символом (давайте определим ее как «%» для простоты понимания). Я хочу найти фразы в этой строке (Str), которые содержат слово (например, «собака»), и поместить эту фразу в новую строку

Я задавался вопросом о хорошем / отличном способе сделать это.

Str - это строка, по которой я буду искать, «Собака» - это слово, которое я ищу, а % - разделитель строк.

У меня уже есть читатель, парсер и как сохранить этот файл. Буду признателен, если кто-нибудь найдет мне легкий способ поиска. Я могу сделать это, но я думаю, что это будет слишком сложно, в то время как само решение очень легко

Я думал о поиске lastIndexOf("dog") и поиске «%» в подстроке Str(0, lastIndexOf("dog"), а затем о втором%, чтобы получить строку, которую я ищу.

P.S: На улице может быть две "собаки", и я хотел бы, чтобы все строки, где было показано слово "собака"

Пример:

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

Ожидаемый результат:

Где моя собака, Джон? // ваша собака на столе // приятного собака "

Ответы [ 2 ]

1 голос
/ 19 мая 2019

Вы можете использовать:

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. .Массив фильтруется, чтобы проверить, содержит ли предложение split слово "собака" или нет.
  3. Полученные строки объединяются в один, используя //.
0 голосов
/ 19 мая 2019

Попробуйте этот код.

Решение разделено от "%", а затем проверьте, содержит ли оно точное слово, которое нам нужно.

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