English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Kotlin базовый учебник

Kotlin управление потоком

Функции в Kotlin

Строки в Kotlin

Kotlin面向对象(OOP)

Kotlin строки и шаблоны строк

В этой статье вы узнаете о Kotlin строках, шаблонах строк и некоторых часто используемых свойствах и функциях строк с помощью примеров.

Kotlin String (строка)

Строка является последовательностью символов. Например, "Hello there!" является литеральным значением строки.

В Kotlin все строки являются объектами класса String. Это означает, что такие строки, как "Hello here!"

Как создать переменную строки?

Это способ определить переменную типа String в Kotlin. Например,

val myString = "Hey there!"

В этом случае myString — это переменная типа String.

Вы можете объявить переменную типа String и указать его тип в одном предложении, а затем инициализировать переменную в другом предложении в программе.

val myString: String
... .. ...
myString = "Howdy"

Как получить доступ к символам строки?

Чтобы получить доступ к элементам строки (символам), используйте оператор индексации. Например,

val myString = "Hey there!"
val item = myString[2]

В этом случае переменная item содержит третий символ строки myString, который является y. Это связано с тем, что в Kotlin индексация начинается с 0, а не с 1.

val myString = "Hey there!"
var item: Char
item = myString[0]    // item = 'H'
item = myString[9]    // item = '!'
item = myString[10]   // Ошибка! Индекс строки выходит за пределы диапазона
item =  myString[-1]  // Ошибка! Индекс строки выходит за пределы диапазона

Пример: итерация по строке

Если вам нужно пройтись по элементам строки, вы можете использоватьЦикл forЛегкоРеализация

fun main(args: Array<String>) {
    val myString = "Hey!"
    for (item in myString) {
        println(item)
    }
}

При выполнении программы выводится:

H
e
y
!

Строки в Kotlin неизменны

Как и в Java, строки в Kotlin неизменны. Это означает, что вы не можете изменить отдельный символ строки. Например,

var myString = "Hey!"
myString[0] = 'h'      // Ошибка! Строки

Но если переменная строки была объявлена с помощью ключевого слова var, то ее можно перераспределить. (Рекомендованная литератураKotlin var Vs val

Пример: перераспределение переменной строки.

fun main(args: Array<String>) {
    var myString = "Hey!"
    println("myString  = $myString")
    myString = "Hello!"
    println("myString  = $myString")
}

При выполнении программы выводится:

myString  = Hey!
myString = Hello!

Строка literal

Литerral - это форма представления фиксированного значения в исходном коде. Например, "Hey there!" - это строка, которая напрямую出现在 в программе и не требует вычислений (напримерПеременная)

В Kotlin есть два типа строковых литералов:

1. Строка escape

Символы, которые могут быть escaped в строке. Например:

val myString = "Hey there!\n"

Здесь, \n является символом escape, который используется для вставки символы перевода строки в тексте.

Вот список поддерживаемых Kotlin символов escape:

  • \t - вставка табулятора

  • \b - вставка символы отступа

  • \n - вставка символы перевода строки

  • \r - вставка каретки

  • \' - вставка одинарной кавычки

  • \" - вставка двойной кавычки

  • \\ - вставка обратной косой черты

  • \$ - вставка символа доллара

2. Исходная строка

Исходная строка может содержать символы перевода строки (не символы перевода строки) и любой текст. Исходная строка отделена тремя двойными кавычками """. Например:

fun main(args: Array<String>) {
    val myString = """
    for (character in "Hey!")
        println(character)
"""
    print(myString)
}

При выполнении программы выводится:

    for (character in "Hey!")
        println(character)

Вы можете использовать функцию trimMargin() для удаления начальных пробелов в исходной строке. Например:

Пример: печать исходного строки

fun main(args: Array<String>) {
    println("Вывод без использования функции trimMargin():")
    val myString = """
    |Kotlin интересен.
    |Kotlin спонсируется и разрабатывается JetBrains.
"""
    println(myString)
    println("Вывод с использованием функции trimMargin():\n")
    println(myString.trimMargin())
}

При выполнении программы выводится:

Вывод без использования функции trimMargin():
    |Kotlin интересен.
    |Kotlin спонсируется и разрабатывается JetBrains.
Вывод с использованием функции trimMargin():
Kotlin интересен.
Kotlin спонсируется и разрабатывается JetBrains.

По умолчанию, функция trimMargin() использует | в качестве префикса отступа. Но вы можете изменить его, передав новому строке.

Пример: функция trimMargin() с параметрами

fun main(args: Array<String>) {
    val myString = """
    !!! Kotlin интересен.
    !!! Kotlin спонсируется и разрабатывается JetBrains.
"""
    println(myString.trimMargin("!!! "))
}

При выполнении программы выводится:

Kotlin интересен.
Kotlin спонсируется и разрабатывается JetBrains.

Кotlin строковые шаблоны

Kotlin имеет замечательную функцию, называемую строковыми шаблонами, которая позволяет строкам содержать шаблонные выражения.

Выражения строковых шаблонов начинаются с знака $. Вот несколько примеров:

Пример: строковые шаблоны Kotlin

fun main(args: Array<String>) {
    val myInt = 5;
    val myString = "myInt = $myInt"
    println(myString)
}

При выполнении программы выводится:

myInt = 5

Это потому, что выражение $myInt (выражение, начинающееся с знака $) в строке evaluates и присоединяется к строке.

Пример: строковые шаблоны с исходными строками

fun main(args: Array<String>) {
    val a = 5
    val b = 6
    val myString = """
    |${if (a > b) a else b}
"""
    println("Больше число: ${myString.trimMargin()}")
}

При выполнении программы выводится:

Больше число: 6

Несколько атрибутов и функций строк

Так как литералы в Kotlin реализованы как экземпляры класса String, вы можете использовать несколько методов и атрибутов этого класса.

  • Атрибут length — возвращает длину последовательности символов строки.

  • Функция compareTo — сравнивает этот строковый объект с заданным объектом. Если объект равен заданному объекту, то возвращается 0.

  • Функция get — возвращает символ по заданному индексу. Вы можете использовать оператор индексации вместо функции get, так как оператор индексации внутренне вызывает функцию get.

  • Функция plus — возвращает новую строку, полученную из соединения этой строки с переданной в функцию строкой. Вы можете использовать оператор + вместо функции plus, так как + оператор на самом деле вызывает функцию plus.

  • Функция subSequence — возвращает новую последовательность символов из заданного начала и конца индексов.

Пример: атрибуты и функции строк

fun main(args: Array<String>) {
    val s1 = "Hey there!"
    val s2 = "Hey there!"
    var result: String
    println("Длина строки s1 составляет — ${s1.length}.")
    result = if (s1.compareTo(s2) == 0) "равны" else "неравны"
    println("Строки s1 и s2 равны — $result.")
    // s1.get(2) эквивалентно s1[2]
    println("Третий символ — ${s1.get(2)}.")
    
    
    println("Подстрока — это \
}

При выполнении программы выводится:

Длина строки s1 составляет 10.
Строки s1 и s2 равны.
Третий символ — y.
result = Hey there! How are you?
Подстрока — это "the"