Есть ли способ найти слово путем поиска только его части? - PullRequest
1 голос
/ 27 июня 2019

Мне нужно взять фразу, которая содержит определенное слово, а затем, если у него есть это слово, даже если оно является частью другого слова, вывести все слово целиком.

Я думаю, как найти слово "apple", но я не могу понять, как найти слово "appletree".

Пока у меня есть код, который находит слово apple и печатает его.

String phrase = "She's sitting under an appletree!"; 

if (phrase.contains("apple")) {
    System.out.println("apple");
} else { 
    System.out.println("none"); 
}

Как мне распечатать "appletree"?

Ответы [ 3 ]

2 голосов
/ 27 июня 2019

Используйте регулярные выражения для 1-лайнера:

String target = phrase.replaceAll(".*?(\\w*apple\\w*).*", "$1");

Это работает путем сопоставления (и, следовательно, замены) всего ввода, но захвата цели с последующим использованием обратной ссылки ($1) к захваченному вводу, в результате чего возвращается только цель.

Слово, в котором появляется apple, сопоставляется с использованием \\w* (т. Е. Любого числа символов слова) на любом конце apple. Минимальное число ведущих символов сопоставляется вне цели с использованием неохотного квантификатора .*?, в противном случае это выражение будет полностью соответствовать apple, что будет пропускать такие слова, как dapple.


Тестовый код:

String phrase = "She's sitting under an appletree!";
String target = phrase.replaceAll(".*?(\\w*apple\\w*).*", "$1");
System.out.println(target);

Выход:

appletree
0 голосов
/ 27 июня 2019

без использования регулярного выражения вы можете просто разбить предложение на слова, пройтись по нему и проверить, содержит ли оно запрошенное слово - стиль старой школы

String [] arr = phrase.split ("\\s+");
for (String word : arr) {
    if (word.contains("apple")) return word;
}
0 голосов
/ 27 июня 2019

Вы можете импортировать сканер, чтобы прочитать фразу. Вы должны использовать scanner.next () для захвата каждого токена ввода в строковую переменную "s", в данном случае каждое слово, а затем использовать оператор if if (s.contains ("apple")), а затем System.out .println (ы).

Надеюсь, это поможет!

  • Robin.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...