Строки
Пример:
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)}")