Строки
Строки в Kotlin представлены типом String. В общем случае, значение строки — это последовательность символов в двойных кавычках ("):
val str = "abcd 123"
Элементы строки — это символы, к которым можно обратиться с помощью операции индексирования: s[i]. Вы можете итерироваться по этим символам с помощью цикла for:
fun main() {
val str = "abcd"
//sampleStart
for (c in str) {
println(c)
}
//sampleEnd
}
Строки неизменяемы. После инициализации строки изменить её значение или присвоить новое значение нельзя. Все операции, преобразующие строки, возвращают результаты в новом String объекте, оставляя исходную строку неизменной:
fun main() {
//sampleStart
val str = "abcd"
println(str.uppercase()) // Create and print a new String object
println(str) // The original string remains the same
//sampleEnd
}
Для конкатенации строк используйте оператор +. Это также работает для конкатенации строк со значениями других типов, при условии, что первый элемент в выражении — это строка:
fun main() {
//sampleStart
val s = "abc" + 1
println(s + "def")
//sampleEnd
}
Литералы строк
Kotlin имеет два типа литералов строк:
Экранированные строки
Экранированные строки могут содержать экранированные символы.
Вот пример экранированной строки:
val s = "Hello, world!\n"
Экранирование выполняется стандартным способом, с помощью обратного слэша (\).
Список поддерживаемых последовательностей экранирования см. на странице Символы.
Сырые строки
Сырые строки могут содержать символы перевода строки и произвольный текст. Они ограничены тройными кавычками ("""), не содержат экранирования и могут содержать символы перевода строки и любые другие символы:
val text = """
for (c in "foo")
print(c)
"""
Чтобы удалить начальные пробелы из сырых строк, используйте функцию trimMargin():
val text = """
|Tell me and I forget.
|Teach me and I remember.
|Involve me and I learn.
|(Benjamin Franklin)
""".trimMargin()
По умолчанию, в качестве префикса отступа используется символ вертикальной черты |, но вы можете выбрать другой символ и передать его в качестве параметра, например trimMargin(">").
Шаблоны строк
Литералы строк могут содержать выражения шаблонов — части кода, которые вычисляются, а их результаты конкатенируются в строку. Выражение шаблона начинается с символа доллара ($) и состоит либо из имени:
fun main() {
//sampleStart
val i = 10
println("i = $i") // Prints "i = 10"
//sampleEnd
}
либо из выражения в фигурных скобках:
fun main() {
//sampleStart
val s = "abc"
println("$s.length is ${s.length}") // Prints "abc.length is 3"
//sampleEnd
}
Вы можете использовать шаблоны как в экранированных, так и в сырых строках. Чтобы вставить символ доллара $ в сырую строку (которая не поддерживает экранирование обратного слэша) перед любым символом, который допустим в начале идентификатора, используйте следующий синтаксис:
val price = """
${'$'}_9.99
"""
© 2010–2022 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/strings.html