1. Порівняння рядків
Порівняння — одна з найчастіших речей, яка виконується з рядками. У класу String є понад десять різноманітних методів, які використовуються для порівняння рядків з рядками. Нижче ми розглянемо сім основних.
| Методи | Опис |
|---|---|
|
Рядки вважаються рівними, якщо всі їх символи збігаються. |
|
Порівнює рядки, ігноруючи регістр (велику чи малу літеру) |
|
Порівнює рядки лексикографічно. Повертає 0, якщо рядки рівні. Число менше нуля, якщо поточний рядок менший за рядок-параметр. Число більше нуля, якщо поточний рядок більший за рядок-параметр |
|
Порівнює рядки лексикографічно, ігнорує регістр. Повертає 0, якщо рядки однакові. Число менше нуля, якщо поточний рядок менший за рядок-параметр. Число більше нуля, якщо поточний рядок більший за рядок-параметр |
|
Порівнює частини рядків |
|
Перевіряє, що поточний рядок починається зі строки prefix |
|
Перевіряє, що поточний рядок закінчується на рядок suffix |
Наприклад, якщо ви хочете написати програму, яка просить користувача ввести шлях до файлу та перевіряє, що це за файл за його розширенням, то код такої програми міг би виглядати приблизно так:
| Код | Примітки |
|---|---|
|
Створення об'єкта ScannerЧитання рядка з консолі Перевіряємо, що рядок path закінчується на заданий рядок |
2. Пошук підрядків
Друга за популярністю операція після порівняння рядків — це пошук одного рядка в іншому. Для цього в класу String також є кілька методів:
| Методи | Опис |
|---|---|
|
Шукає рядок str у поточному рядку. Повертає індекс першого символа знайденого рядка. |
|
Шукає рядок str у поточному рядку, пропустивши index перших символів. Повертає індекс знайденого входження. |
|
Шукає рядок str у поточному рядку з кінця. Повертає індекс першого входження. |
|
Шукає рядок str у поточному рядку з кінця, пропустивши index перших символів. |
|
Перевіряє, що поточний рядок відповідає шаблону, заданому регулярним виразом. |
Методи indexOf(String) та indexOf(String, index) часто використовуються разом. Перший дозволяє знайти перше входження переданого підрядка в поточному рядку. А другий метод дозволяє знайти друге, третє тощо входження за рахунок того, що пропускає перші index символи.
Наприклад, якщо у нас є url типу такого: «https://domen.com/about/reviews», і ми хочемо замінити ім’я домену на codegym.com. Домен в урлах може бути різним, але ми знаємо, що:
- Перед ім’ям домену йдуть два слеші
// - Після імені домену йде один слеш
/
Ось як би виглядав код такої програми:
| Код | Примітки |
|---|---|
|
Створення об’єкта Scanner Читання рядка з консолі Отримання індексу першого входження рядка //Отримання індексу першого входження рядка /, але пошук тільки після символів //.Отримання рядка від початку і закінчуючи символами //Отримання рядка від / і до кінця.Склеювання рядків і нового домену. |
Методи lastIndexOf(String) і lastIndexOf(String, index) працюють точно так само, тільки пошук ведеться з кінця рядка до початку.
3. Створення підрядків
Крім порівняння рядків і пошуку підрядків, є ще одна дуже популярна дія — отримання підрядку з рядка. У попередньому прикладі ви якраз бачили виклик методу substring(), який повертав частину рядка.
Ось перелік 8 методів отримання підрядків з поточного рядка:
| Методи | Опис |
|---|---|
|
Повертає підрядок, заданий інтервалом символів beginIndex..endIndex. |
|
Повторює поточний рядок count разів |
|
Повертає новий рядок: замінює символ oldChar на символ newChar |
|
Замінює в поточному рядку підрядок, заданий регулярним виразом. |
|
Замінює в поточному рядку всі підрядки, що відповідають регулярному виразу. |
|
Перетворює рядок до нижнього регістру |
|
Перетворює рядок до верхнього регістру |
|
Видаляє всі пробіли на початку та в кінці рядка |
Ось короткий опис існуючих методів:
Метод substring(int beginIndex, int endIndex)
Метод substring повертає новий рядок, який складається з символів поточного рядка, починаючи з символа під номером beginIndex і закінчуючи endIndex. Як і у всіх інтервалах у Java, символ з номером endIndex в інтервал не входить. Приклади:
| Код | Результат |
|---|---|
|
|
|
|
|
|
|
|
Якщо параметр endIndex не вказується (а так можна), підрядок береться від символа beginIndex і до кінця рядка.
Метод repeat(int n)
Метод repeat просто повторює поточний рядок n разів. Приклад:
| Код | Результат |
|---|---|
|
|
|
|
|
|
|
|
Метод replace(char oldChar, char newChar)
Метод replace() повертає новий рядок, у якому всі символи oldChar замінені на символ newChar. Довжина рядка при цьому не змінюється. Приклад:
| Код | Результат |
|---|---|
|
|
|
|
|
|
|
|
Методи replaceFirst() і replaceAll()
Метод replaceAll() замінює всі входження одного підрядка на інший. Метод replaceFirst() замінює перше входження переданого підрядка на заданий підрядок. Рядок, який замінюють, задається регулярним виразом. Розбирати регулярні вирази ми будемо у квесті Java Multithreading.
Приклади:
| Код | Результат |
|---|---|
|
|
|
|
|
|
|
|
Методи toLowerCase() и toUpperCase()
З цими методами ми познайомились, коли вперше вчилися викликати методи класу String.
Метод trim()
Метод trim() видаляє у рядка пробіли з початку і з кінця рядка. Пробіли всередині рядка ніхто не чіпає. Приклади:
| Код | Результат |
|---|---|
|
|
|
|
|
|
|
|
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ