Spec-Zone.ru › Kotlin 1.8

Строки

Строки в 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
"""
Последнее изменение: 10 января 2023 г.
Символы Массивы

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API