5.2. АРІ класу String. Використання методів класу String для обробки рядкових масивів
АРІ класу String
Клас String дуже часто використовується програмістами, тому його слід вивчити дуже добре.
Слід пам'ятати, що об'єкти класу String є незмінними. Тому, коли вам здається, що ви міняєте рядок, то насправді ви створюєте новий рядок. У Java є спеціальні класи StringBuffer і StringBuilder, який допускають зміни в рядку.
Класи String, StringBuffer, StringBuilder визначені в пакеті java.lang і доступні автоматично без оголошення імпорту. Всі три класи реалізують інтерфейс CharSequence.
Створити рядок дуже просто. Наприклад, можна так:
String aboutCat = "Кіт - це звучить гордо, а якщо наступити на хвіст, то голосно";
На мові Java знак плюс (+) означає конкатенацію рядків (concatenation), іншими словами - об'єднання рядків.
String cat = "Кіт";
String name = "Васька";
//складовими є два рядки і пробіл між ними, щоб слова не склеювалися
String fullname = cat + "" + name; // вийде Кіт Васька
Якщо один з операндів у виразі містить рядок, то інші операнди також повинні бути рядками. Тому Java сама може призвести змінні до рядка, навіть якщо вони не є рядками.
int digit = 4;
String paws = " лапи";
String aboutcat = digit + paws; //хоча ми складаємо число і рядок, але все одно отримаємо рядок
За лаштунками Java за нас перетворило число 4 в рядок "4".
Використання методів класу String для обробки рядкових масивів
Ви можете отримати символ, що знаходиться на певній позиції в рядку, викликавши метод charAt (). Індекс першого символу в рядку - 0, останнього - length () - 1. Наступний код повертає 9 символ рядка.
1
2
String anotherPalindrome = "Niagara. O roar again!";
charaChar = anotherPalindrome.charAt(9);
Нумерація символів починається з 0, тому 9 символ в рядку - «О».
Нумерація символів в рядку
Якщо вам необхідно отримати не один символ, а частину рядка, можна використовувати метод substring. Метод substring має два варіанти:
Метод
Опис
String substring(int beginIndex, int endIndex)
Повертає підрядок даного рядка, починаючи з символу з індексом beginIndex, закінчуючи endIndex - 1.
String substring(int beginIndex)
Повертає підрядок даного рядка, починаючи з символу під номером beginIndex і до кінця рядка.
Наступний код поверне підрядок рядка, починаючи з 11 символу, але не включаючи 15, вийде слово «roar»
1
2
String anotherPalindrome = "Niagara. O roar again!";
У таблиці наведено деякі методи для роботи з рядками і їх опис.
Метод
Опис
String[] split(String regex) String[] split(String regex, int limit)
Шукає збіги в рядку згідно заданому регулярному виразу і розбиває рядок на масив. Необов'язковий аргумент limit задає максимальний розмір поверненого масиву.
CharSequence subSequence(int beginIndex, int endIndex)
Повертає послідовність символів, починаючи з beginIndex, закінчуючи endIndex — 1.
String trim()
Повертає рядок, в якому вилучені зайві пробіли на початку рядка і в кінці.
String toLowerCase() String toUpperCase()
Повертає копію рядка, символи якої переведені в нижній або верхній регістр. Якщо перетворень не вимагається повертається початковий рядок.
Пошук символів і підрядків
Розглянемо ще кілька методів для пошуку символів і підрядків.
Клас String містить методи, які повертають позицію символу або підрядка в рядку: indexOf () і lastIndexOf (). Методи indexOf() здійснюють пошук з початку рядка, lastIndexOf () - з кінця. Якщо дані методи не знайшли збігів, вони повертають -1.
Також клас String містить метод contains, який повертає true, якщо задана послідовність символів міститься в рядку. Використовуйте цей метод, якщо необхідно дізнатися про існування підрядка в рядку, а її позиція не важлива.
У наступній таблиці описуються методи indexOf () і lastIndexOf ().
Метод
Опис
int indexOf(int ch) int lastIndexOf(int ch)
Повертає індекс першого(останнього) входження символу в рядку.
int indexOf(int ch, int fromIndex) int lastIndexOf(int ch, int fromIndex)
Повертає індекс першого (останнього) входження символу в рядку, починаючи пошук із зазначеного індексу.
int indexOf(String str) int lastIndexOf(String str)
Повертає індекс першого (останнього) входження підрядка в рядку.
int indexOf(String str, int fromIndex) int lastIndexOf(String str, int fromIndex)
Повертає індекс першого (останнього) входження підрядка в рядку, починаючи пошук із зазначеного індексу.
boolean contains(CharSequence s)
Повертає true, якщо задана послідовність символів міститься в рядку.
CharSequence - це інтерфейс, який реалізує класString, тому можна передавати рядки в метод contains ().
Зміна рядків. Заміна символів і підрядків
Клас String має кілька методів для вставки символів і підрядків у рядок. У таблиці описані методи для заміни знайдених символів і підрядків.
Метод
Опис
String replace(char oldChar, char newChar)
Повертає новий рядок, в якій всі oldChar замінені на newChar.
Метод extension використовує метод lastIndexOf для визначення останнього входження ".". Метод substring використовує це значення для знаходження розширення файлу.