Строки
Строки в 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–2023 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/strings.html