Клас StringTokenizer
Клас StringTokenizer містить методи, які дають змогу розбивати текст на лексеми, що відокремлюються роздільниками.
Набір розділювачів за замовчуванням: пробіл, символ табуляції, символ нового рядка, переведення каретки.
У рядку розділювачів, який задається, можна вказувати інші роздільники, наприклад: «= , ; :».
Конструктори класу StringTokenizer
Клас StringTokenizer має конструктори:
• StringTokenizer(String str);
• StringTokenizer(String str, String delimiters);
• StringTokenizer(String str, String delimiters, Boolean delimAsToken);
• delimAsToken – прапор, який символізує, чи потрібно повертати роздільник як лексему.
Методи класу StringTokenizer
• String nextToken() повертає лексему як String-об’єкт;
• boolean hasMoreTokens() повертає true, якщо одна або кілька лексем залишилися в рядку;
• int сountToken() повертає кількість лексем.
Розглянемо приклад:
StringTokenizer st = new StringTokenizer("Java|Near|Us", "|", true);
while(st.hasMoreTokens()) {
System.out.println(st.nextToken("|"));
}
На екрані отримаємо:
Java
|
Near
|
Us
Регулярні вирази
Клас java.util.regex.Pattern застосовується для визначення регулярних виразів (шаблонів), для яких шукається відповідність у рядку, файлі або іншому об'єкті, що представляє послідовність символів.
Для визначення шаблону використовуються спеціальні синтаксичні конструкції.
Про кожну відповідність можна отримати інформацію за допомогою класу java.util.regex.Matcher.
Клас Pattern використовується для простої обробки рядків.
Для складнішої обробки рядків використовується клас Matcher.
Метасимволи
Символ Опис
\\b Позиція, що відповідає межі слова
\\B Позиція, яка не відповідає межі слова
\\n Відповідає символу нового рядка
\\r Відповідає символу повернення каретки
\\t Відповідає символу табуляції
\\f Відповідає символу кінця файлу
\\d Відповідає будь-якій десятковій цифрі
\\D Відповідає будь-якому символу, окрім десяткової цифри
\\w Відповідає будь-якому алфавітно-цифровому символу та символу підкреслення, тобто символ, що утворює «слово»;
\\W Відповідає всім символам, які не підпадають під визначення метасимволу
\\s Відповідає будь-якому пробільному символу \\S Відповідає будь-якому не пробільному символу
Квантифікатори
Квантифікатор Опис
? Попередній символ або входить у рядок один раз, або взагалі до нього не входить
* Попередній символ входить у рядок будь-яку кількість разів, зокрема 0
+ Попередній символ входить у рядок один і більше разів
{n} Попередній символ входить до рядка n разів
{n,} Попередній символ входить у рядок n і більше разів
{n,m} Попередній символ входить у рядок від n до m разів
Спеціальні символи
Метасимвол Опис
. Відповідає одному будь-якому символу
[…] Відповідає одному символу з тих, що перераховані у квадратних дужках
[^…] Відповідає одному будь-якому символу, не перерахованому у квадратних дужках
^ Позиція на початку рядка
$ Позиція наприкінці рядка
| Будь-який з поділюваних виразів
(…) Логічне об'єднання частин регулярного виразу
Методи класу Pattern
• Pattern compile(String regex) повертає Pattern, який відповідає regex.
• Matcher matcher(CharSequence input) повертає Matcher, завдяки якому можна знаходити відповідності у рядку input.
• boolean matches(String regex, CharSequence input) перевіряє на відповідність рядка input шаблону regex.
• String pattern() повертає рядок, що відповідає шаблону.
• String[] split(CharSequence input) розбиває рядок input, беручи до уваги те, що роздільником є шаблон.
• String[] split(CharSequence input, int limit) розбиває рядок input на не більше ніж limit частин.
Завдяки методу matches() класу Pattern можна перевіряти на відповідність шаблону цілого рядка, але якщо необхідно знайти відповідності всередині рядка, наприклад, визначати ділянки, які відповідають шаблону, клас Pattern не може бути використаний.
Методи класу Matcher
• boolean matches() перевіряє, чи відповідає весь рядок шаблону;
• boolean lookingAt() намагається знайти послідовність символів, що починається з початку рядка та відповідна шаблону;
• boolean find(), boolean find(int start) намагається знайти послідовність символів, що відповідають шаблону, у будь-якому місці рядка.
• Параметр start вказує на початкову позицію пошуку.
• reset() скидає стан Matcher у вихідний.
• replaceAll(String replacement) – метод використовується для заміни всіх підпослідовностей символів, що задовольняють шаблон, на заданий рядок.
Методи для груп
У регулярному виразі для зручнішої обробки вхідної послідовності застосовуються групи, які допомагають виділити частини знайденої підпослідовності.
У шаблоні вони позначаються дужками «(» та «)». Номери груп розпочинаються з одиниці.
Нульова група збігається з усією знайденою підпослідовністю.
• int end() повертає індекс останнього символу підпослідовності, що задовольняє шаблон;
• int end(int group) повертає індекс останнього символу цієї групи;
• String group(int group) повертає конкретну групу;
• int groupCount() повертає кількість груп;
• int start() повертає індекс першого символу підпослідовності, що задовольняє шаблон;
• int start(int group) повертає індекс першого символу зазначеної групи;
• boolean hitEnd() повертає істину, якщо було досягнуто кінця вхідної послідовності.
Клас Date
Клас Date призначений для роботи з поточними датою та часом і дає змогу відштовхуватися від них для розв'язку своїх завдань.
Під час виходу нових версій Java частина методів класу була переміщена до класів Calendar і DateFormat.
import java.util.Date
Створення об'єкту Date
Date date = new Date();
Методи класу Date
Клас має два конструктори:
• Date().
• Date(long milliseconds).
• boolean after(Date date) – якщо об'єкт класу Date містить пізнішу дату, ніж зазначено в параметрі, то повертається true.
• boolean before(Date date) – якщо об'єкт класу Date містить більш ранню дату, ніж зазначено в параметрі, то повертається true.
• int compareTo (Date date) порівнює дати. Повертає 0, якщо збігаються, негативне значення – якщо викликана дата більш рання, позитивне значення – якщо викликана дата пізніша, ніж у параметрі.
• boolean equals(Object object) – якщо дати збігаються, то повертається true.
• long getTime() повертає кількість мілісекунд, які пройшли з опівночі 1 січня 1970 року.
• void setTime(long milliseconds) встановлює час і дату у вигляді числа мілісекунд, які пройшли з опівночі 1 січня 1970 року.
Клас GregorianCalendar
Клас Gregorian Calendar є підкласом Calendar, який представляє звичайний Григоріанський календар.
Метод getInstance() класу Calendar зазвичай повертає об'єкт класу GregorianCalendar, ініційований поточною датою та часом згідно з регіональними налаштуваннями.
Клас має два поля AD і BC – до нашої ери і наша ера.
Окрім стандартних методів, які є в класі Calendar, у GregorianCalendar є метод isLeapYear() для перевірки високосного року.
boolean isLeapYear(int year)
Якщо рік високосний, то повертається true.
Q&A
Дякую всім за заняття!🙌🏻
❗️🎓Тема уроку: 4. Regular expressions & Data API
Нагадую, що дедлайн здачі домашніх робіт – до наступного уроку.
Якщо виникають складнощі, пишіть, допоможу із задоволенням 😌
Запис лекції тренер опублікує трохи пізніше 🖥
Не забудьте повторити матеріал та підготуватися до наступного уроку📚
Успіху і до зустрічі!🤩
OOP. 1
Назва
Кількостей
Ціна
Рік виготовлення
Виробник
Визначити найдорожчий товар на складі та надрукувати всі відомості про нього.
OOP. 2
Назва
Частота
Об'єм оперативної пам'яті
Наявність DVD ROM
Вартість
Обчислити середню вартість усіх комп'ютерів і надрукувати найменування комп'ютерів та їхню середню вартість.
OOP. 3
Прізвище
Рік народження
Посада
Зарплата
Освіта
Визначити кількість працівників - інженерів і надрукувати всі відомості про них.