Используйте регулярные выражения для 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