— Привіт, Аміго!

Наскільки я знаю, Ріша вже розповів тобі про регулярні висловлювання.

— Так, було дуже цікаво.

— Відмінно, тепер я розповім тобі про роботу з рядками за допомогою регулярних виразів.

Почнемо ми з найпростішого:

1) Як перевірити, чи збігається рядок із шаблоном, заданим регулярним виразом:

Для цього є метод matches, до якого передається рядок, що зберігає регулярний вираз, а метод повертає true або false.

Метод(и) Приклад(и)
boolean matches(String regex)
String s = "Good news everyone!";
Boolean test = s.matches("news.*");
Результат:

false (рядок не починається зі слова news)

2) Як замінити всі підрядки, задані маскою, на потрібні нам?

Для цього є два методи.

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

Метод replaceFirst замінює перше входження переданого підрядка на заданий підрядок.

Метод(и) Приклад(и)
String replaceAll(String regex, String replacement)
String s = "Good neweveryone!";
String s2 = s.replaceAll("e.", "EX");
Результат:

s2 == "Good nEXs EXEXyonEX";
String replaceFirst(String regex, String replacement)
String s = "Good news everyone!";
String s2 = s.replaceFirst("e.", "EX");
Результат:

s2 == "Good nEXs everyone!";

3) Як розбити рядок на частини?

Для цього є метод split, який приймає маску підрядка-розділювача:

Метод(и) Приклад(и)
String[] split(String regex)
String s = "Good news everyone!";
String[] ss = s.split("ne");
System.out.println(Arrays.toString(ss));
Результат (буде масив із трьох рядків):

[Good , ws everyo, !]
"Good", "ws everyo", "!";

Є ще один спосіб розбиття рядка на частини – за допомогою класу StringTokenizer.

Цей клас не використовує регулярні вирази, натомість у нього просто передається рядок, що складається із символів-розділювачів. Переваги цього підходу в тому, що він не розбиває відразу весь рядок на шматочки, а поступово йде від початку до кінця.

У конструктор із двома параметрами потрібно передати рядок, який ми розбиваємо на частини, та рядок – набір символів, які використовуються для поділу.

Метод nextToken() повертає черговий токен - підрядок.

Метод hasMoreTokens() повертає true, якщо ще залишилися не віддані підрядки.

Метод(и) Приклад(и)

boolean hasMoreTokens()

String nextToken()

String s = "Goodnews everyone!";

StringTokenizer tokenizer =
new StringTokenizer(s, "ne");
while(tokenizer.hasMoreTokens())
{
String token = tokenizer.nextToken();
System.out.println(token);
}
Виведення на екран буде таким:


Good 
ws 
v
ryo
!

Зверніть увагу, що роздільником вважається будь-який символ, переданий у другому рядку в конструктор StringTokenizer.

— Так, тут також усе зрозуміло. Може, я не відразу зможу сам написати такий код, але те, що тут відбувається, мені зрозуміло.

— Відмінно, тоді вважатимемо, що ти освоїв тему.