Прямые ссылки на публичные уроки для быстрого старта и стабильной индексации lesson-страниц.
Строки в программировании — это набор символов, объединённых в последовательность. Рассмотрим основные способы работы со строками на примере бота, который приветствует пользователей по имени.
println("What is your main question?")
Конкатенация — это сложение строк с помощью оператора +. Объявим переменные и соберём строку из нескольких частей. Пробел хранится в переменной типа Char (одиночный символ) в одинарных кавычках.
val greeting = "Hello" val space = ' ' println(greeting + "!" + space + "What is your main question?")
Добавим обращение по имени через отдельную переменную:
val userName = "Star Lord" println(greeting + ", " + userName + "!" + space + "What is your main question?")
Такой способ работает, но нагромождение кавычек и операторов + плохо читается и повышает риск ошибки.
Kotlin позволяет вставлять значения переменных прямо в строку с помощью строковых шаблонов. Для этого перед именем переменной ставится знак $.
println("$greeting, $userName! What is your main question?")
Интерпретатор автоматически подставит значения переменных в строку. Переменная space больше не нужна — строка теперь единая, с естественными пробелами. Строковые шаблоны работают с любыми типами: переменными, выражениями, вызовами методов, условиями if/else.
Если в шаблон нужно вставить не просто переменную, а выражение — оно помещается в фигурные скобки ${}. Выражение вычислится первым, и в строку подставится результат.
println("To which you can respond ${40 + 2}")
Для записи многострочного текста в Kotlin используются тройные кавычки """. Текст между ними сохраняется со всеми переносами строк и отступами.
Среда разработки автоматически предлагает добавить .trimIndent() к многострочной строке. Эта функция определяет минимальный общий отступ слева у всех строк и удаляет его из каждой.
val multiString = """ ewuriw rewrqwe jkj ;lk """.trimIndent()
Из трёх строк минимальный отступ у второй — он и будет вырезан во всех строках. Без .trimIndent() все оригинальные отступы сохраняются.
.trimMargin() выравнивает все строки по левому краю. Для этого в начале каждой строки ставится символ |.
val multiString = """ |ewuriw |rewrqwe |jkj ;lk """.trimMargin()
Результат — ровный отформатированный текст без лишних отступов. Подходит для многострочных шаблонов со сложной логикой, где важны читабельность и структура.
Чтобы вставить в строку специальные символы, используется экранирование — символ \ перед специальным символом.
Распространённые escape-последовательности:
| Последовательность | Значение |
|---|---|
\" | Двойная кавычка |
\n | Перенос строки |
\\ | Обратный слэш |
Пример — вывести строку с кавычками вокруг части текста:
val phrase = "And he said – \"it is magnificent!\"" println(phrase)
Без экранирования компилятор воспримет внутреннюю кавычку как конец строки, что приведёт к ошибке компиляции.