Строки

Строки


В главное меню

Пример:

const val TAVERN_NAME = "Taernyl's Folly"

fun main()  {

placeOrder()
}

private fun placeOrder() {
    val indexOfApostrophe = TAVERN_NAME.indexOf('\'')
    val tavernMaster = TAVERN_NAME.substring(0 until indexOfApostrophe)
    println("Madrigal speaks with $tavernMaster about their order.")
}

indexOf - находит первый экземпляр char и передаёт его индекс

substring(0 until indexOfApostrophe) - распечатывает строку с первого символа до индекса переменной indexOfApostrophe.

split - принимает символ-разделитель и возвращает список подстрок без разделителя.

Пример:

placeOrder("shandy, Dragon's Breath, 5.91")
...
val data = menuData.split(',')
val type = data[0]
val name = data[1]
val price = data[2]
val message = "Madrigal buys a $name ($type) for $price"
println(message)

Так как split возвращает список, для нее поддерживается упрощенный синтаксис, который называется деструктуризацией. Деструктуризация — это возможность объявить и инициализировать сразу несколько переменных.

В любом случае, когда результат — это список, можно использовать синтаксис деструктуризации. Кроме списков (тип List), деструктурирующее присваивание поддерживается также для ассоциативных массивов (тип Map) и пар (тип Pair) и для классов данных.

Пример:

val (type, name, price) = menuData.split(',')
val message = "Madrigal buys a $name ($type) for $price"

Функция replace

Заменяет символы по заданным правилам. replace принимает регулярное выражение, определяющее символы для замены, и вызывает анонимную функцию, объявленную вами, которая определяет, какие символы чем заменить.

Пример:

private fun toDragonSpeak(phrase: String) =
    phrase.replace(Regex("[aeiou]")) {
        when (it.value) {
            "a" -> "4"
            "e" -> "3"
            "i" -> "1"
            "o" -> "0"
            "u" -> "|_|"
            else -> it.value
        }
    }

....

val phrase = "Ah, delicious $name!"
println("Madrigal exclaims: ${toDragonSpeak(phrase)}")


Report Page