JavaRush /Курсы /Java Multithreading /Поиск, получение, удаление подстроки в String

Поиск, получение, удаление подстроки в String

Java Multithreading
2 уровень , 4 лекция
Открыта

— Смотри, что еще можно делать с подстроками:

8) Как найти нужную подстроку в строке?

Методы indexOflastIndexOf позволяют искать строки в строках. Есть 4 вида таких методов:

Метод indexOf ищет в нашей строке указанную строку. Он может искать ее с начала строки или начиная с какого-то номера (второй метод). Если строка найдена – метод возвращает номер ее первого символа, если не найдена — возвращает -1

Метод(ы) Пример(ы)
int indexOf(String str)
String s = "Good news everyone!";
int index = s.indexOf("ne");
Результат:

index == 5
int indexOf(String str, int from)
String s = "Good news everyone!";
int index = s.indexOf("ne", 7);
Результат:

index == 16

Метод lastIndexOf ищет указанную строку в нашей строке с конца! Он может искать ее с самого конца строки или начиная с какого-то номера (второй метод). Если строка найдена – метод возвращает номер ее первого символа, если не найдена — возвращает -1.

Метод(ы) Пример(ы)
int lastIndexOf(String str)
String s = "Good news everyone!";
int index = s.lastIndexOf("ne");
Результат:

index == 16
int lastIndexOf(String str, int from)
String s = "Good news everyone!";
int index = s.lastIndexOf("ne", 15);
Результат:

index == 5

9) Как заменить часть строки на другую?

Для этого есть три метода.

Метод replace заменяет все вхождения определенного символа на другой.

Метод replaceAll заменяет все вхождения одной подстроки на другую.

Метод replaceFirst заменяет первое вхождение переданной подстроки на заданную подстроку.

Метод(ы) Пример(ы)
String replace(char oldChar, char newChar)
String s = "Good news everyone!";
String s2 = s.replace ('o', 'a');
Результат:

s2 == "Gaad news everyane!";
String replaceAll(String regex, String replacement)
String s = "Good news everyone!";
String s2 = s.replaceAll("ne", "_");
Результат:

s2 == "Good _ws everyo_!";
String replaceFirst(String regex, String replacement)
String s = "Good news everyone!";
String s2 = s.replaceFirst("ne", "_");
Результат:

s2 == "Good _ws everyone!";

Но тут нужно быть аккуратным. В двух последних методах (replaceAll&replaceFirst) в качестве строки, которую мы ищем, передается не просто строка, а регулярное выражение. Но об этом я расскажу позднее.

Комментарии (76)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
No Name Уровень 12
21 ноября 2024
+ лекция в копилке
Private Joker Уровень 36
19 июня 2024
Ну что же, спустя 25 уровней, я наконец-то познал всю суть этих методов. Хорошая лекция.
Dr.Alexcemen9 Уровень 51
8 августа 2024
охереть позитивный комент ля, лови лайк👍
Dr.Alexcemen9 Уровень 51
8 августа 2024
но только один ибо ты мне не нравишься
Dmitry Уровень 34
19 августа 2024
+ 😀
Максим Li Уровень 3
18 мая 2024
18.05.2024
Ислам Уровень 33
1 марта 2024
Nice
Dmitry Shaburov Уровень 33
29 ноября 2023
29,11,2023
ZюMLik Уровень 51
8 марта 2023
хм, лекции для тех кто пропустил java syntax?
Anonymous #2988619 Уровень 39
14 апреля 2022
Метод replace(old char, new char) работает ведь и со строками... В чем тогда его принципиальное отличие от replaceAll(String regex, String replacement)? Только в том, что обычный replace не работает с регулярными выражениями?
Ada Уровень 1
10 июля 2022
replace заменяет только один символ (то есть заменить все символы "а" на "о", к примеру. replaceAll заменяет набор символов (заменить все "пр" на "плов")
Иван Уровень 41
29 декабря 2022
replace() может заменять не только символы поштучно, получается, что отличия replace() и replaceAll() в том, что в replaceAll() первый аргумент это регулярное выражение, а в методе replace() - нет.
BobaFoba Уровень 28
16 февраля 2022
оракл как всегда выручает lastIndexOf(String str, int fromIndex) Returns the index within this string of the last occurrence of the specified substring, searching backward starting at the specified index.
Gans Electro Уровень 4
9 мая 2023
Возвращает индекс в этой строке последнего вхождения указанной подстроки, выполняя поиск в обратном порядке, начиная с указанного индекса.
Alex Уровень 1
26 октября 2021
https://codingbat.com/ - Рекомендую как дополнение, много задачек на String, Map и т.д
Уровень 51
13 ноября 2021
diszay promocjia na parowki
30 июня 2021
Регулярки?... Не, не слышал....