Найти в Дзене

Тройные кавычки

Оглавление

Расскажу сегодня немного о фишке, которую многие и так знают: тройные кавычки. Внутри таких кавычек, мы можем писать текст на нескольких строках без необходимости использования символов экранирования. Например:

А если не будем использовать тройные кавычки и просто сделаем с пробелами, то будет так:

-2

В целом результат похож, но нужно писать больше текста, соединять его, использовать \n.

Примеры, где это особенно полезно

  • Создание запроса к базе данных (только помним про параметризованные запросы):
-3

Смотрите как удобно читать сам запрос. Ну просто красота.

  • Пример с JSON:
-4
  • Можем включать специальные символы (обратный слэш) без экранирования:
-5
  • Цитаты:
-6

Например, в обычных строках нам пришлось бы экранировать символ кавычки с помощью обратного слэша (\):

-7

Как работают тройные кавычки под капотом

Когда компилятор встречает строку в тройных кавычках, он обрабатывает ее как обычную строку, но без экранирования. В результате такой строки становится объект типа String, который сохраняет все пробелы и переносы строк, как они указаны в исходном коде.

Однако важно помнить, что символы переноса строки (\n) и пробелы тоже остаются частью строки. Например:

-8

Как удалить отступы

Для удаления ненужных отступов можно использовать метод trimMargin. По умолчанию он ориентируется на разделитель |:

-9

Но можем указать свой разделитель. Например, ??:

-10

Преимущества

  1. Тройные кавычки делают код более читаемым и удобным для работы.
  2. Пробелы и переносы строк сохраняются, что упрощает работу с форматированными данными.

Ограничения

  1. Все пробелы и переносы строк сохраняются, что может приводить к неожиданным результатам, если их не учесть.
  2. Необходимо дополнительно обрабатывать отступы, чтобы избежать лишних пробелов в строке.

Есть несколько исключений, когда экранирование все-таки необходимо:

  • Тройные кавычки внутри тройных кавычек: если нужно включить три кавычки внутри строки, то используем экранирование, помещая всё внутрь ${""}:
-11
  • Экранирование символов управления: если нам нужно включить табуляцию (\t) или новую строку (\n), то экранируем по шаблону выше:
-12

-13

Дубль статей в телеграмме — https://t.me/android_junior

Мои заметки в телеграмме — https://t.me/android_junior_notes