Перейти до вмісту

Освоюємо 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")
Standard input or output Результат:
Введіть ім'я>Тарас
Введіть прізвище
Горовий
Ви ввели: Тарас Горовий

Розділення та поєднання рядків

[ред.]

Для розділення рядків на складові використовується функція 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)
Standard input or output Результат:
[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)
Standard input or output Результат:
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 на вибраній функції, можна отримати детальний опис даної функції.