Освоюємо Kotlin/Робота зі String
String — це тип, який представляє текстові рядки. Kotlin має велику різноманітність функцій для роботи з рядками.
Оголошення рядків
[ред.]Рядки в Kotlin створюються з допомогою подвійних лапок:
val mytxt="text"
val mytxt2:String="text2" // з явним вказанням типу (необов'язково)
Довжину рядка можна отримати з використанням властивості length.
val length=mytxt.length
Робота з консоллю
[ред.]Для виводу рядків на екран застосовуються функції print() та println(). Різниця між ними в тому, що перша не переносить курсор на новий рядок, а інша навпаки переность його на новий рядок після її виконання.
Прочитати рядок з консолі можна з допомогою функції readln()
print("Введіть ім'я>")
val firstName=readln()
println("Введіть прізвище")
val lastName=readln()
println("Ви ввели: $firstName $lastName")
Результат:
Введіть ім'я>Тарас Введіть прізвище Горовий Ви ввели: Тарас Горовий |
Розділення та поєднання рядків
[ред.]Для розділення рядків на складові використовується функція split(), а для поєнання функція joinToString(). Обидві функції як аргумент приймають рядок по якому слід розбивати або ж поєднувати.
val text:String="My native town is beautiful"
val text2:List<String> =text.split(" ")
println(text2)
val text3:String=text2.joinToString("-")
println(text3)
Результат:
[My, native, town, is, beautiful] My-native-town-is-beautiful |
Для яснішого розуміння, що відбуваається для змінних явно вказані їх типи. Функція split() повертає об'єкт типу List (список) - це щось схоже на масиви. Детальніше див. Колекції. Як бачимо програма спочатку розбила на елементи наш текст використовуючи пробіл як розмежовувач, а потім збила, отриманий список слів, знову у String, але для з'єднання вже використовувалось тире.
Пошук, заміна та модифікація
[ред.]Доволі часта операція при роботі зі String є пошук певних слів у певному рядку. У Kotlin існує багато функцій для цього. Просто перевірити чи входить певний текст у інший текст можна за допомогою функцій contains(), startsWith(), endsWith().
val text:String="My native town is beautiful"
if (text.contains("town")) println ("слово town присутній у тексті")
if (text.startsWith("My")) println ("текст починається зі слова My")
if (text.endsWith("beautiful")) println ("текст закінчується на beautiful")
Як видно з лістинга згадані функції повертають boolean значення, тобто true або false.
Часто постає задача знайти певну послідовність символів, наприклад, з метою подальшої їх заміни на іншу послідовність. Це можна зробити з допомогою функції indexOf():
val text:String="My native town is beautiful"
val index=text.indexOf("is") // 15
Функція поверне -1, якщо послідовність не знайдена в текстовому рядку.
Можна отримати певний кусочок із існуючого рядка за допомогою функції substring() вказавши індекси початкових символів і кінцевих символів:
val text:String="My native town is beautiful"
val newStr=text.substring(15,17) // is
Також можна замінити існуюче слово в тексті на інше з допомогою функції replace():
val text:String="My native town is beautiful"
val newStr=text.replace("beautiful","awful")
println(newStr)
Результат:
My native town is awful |
Якщо постає необхідність видалити пробіли на початку і вкінці рядка, то використовують функцію trim():
val text:String=" My native town is beautiful "
val newStr=text.trim()
Це часто необхідно робити після вводу рядків користувачем, які можуть випадаково поставити пробіли при вводі вкінці чи на початку текстового рядка.
Також часта задача переведення рядка у верхній або нижній регістр. Для цього слугують функції uppercase() та lowercase():
val text:String=" My native town is beautiful "
val newStr=text.uppercase() // MY NATIVE TOWN IS BEAUTIFUL
val newStr2=text.lowercase() //my native town is beautiful
Записати рядок задом наперед можна з функцією reversed():
val reversedText=text.reversed() //lufituaeb si nwot evitan yM
Перевірка на порожність рядка
[ред.]У Kotlin існують дві функції на перевірку на порожність рядка isEmpty() та isBlank(), що повертають значення типу boolean, тобто true або false. Різниця у них в тому, що isEmpty() видасть false, якщо текст складається лише з пробілів. isBlank() не враховує пробіли.
val text=""
println(text.isEmpty()) //true
println(text.isBlank()) //true
val text2=" "
println(text2.isEmpty()) //false
println(text2.isBlank()) //true
Інші функції
[ред.]Kotlin має і інші функції та різні модифікації згаданих функцій. Ви можете дослідини їх у IntelliJ IDEA набравши після змінної типу String крапочку і в спливаючому вікні отримати список доступних функцій. Нажавши Ctrl+Q на вибраній функції, можна отримати детальний опис даної функції.