Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как записать многострочную строку

Короткий ответ

Текстовый блок начинается и заканчивается тремя кавычками """. Переводы строк в нём сохраняются как есть:

void main() {
    String poem = """
            Roses are red,
            Violets are blue.
            """;
    IO.print(poem);
}

Результат:

Roses are red,
Violets are blue.

Отступы

Java убирает общий отступ всех строк. Позиция закрывающих """ тоже учитывается — так можно оставить отступ в результате:

void main() {
    String json = """
            {
              "name": "Anna"
            }
        """;
    IO.print(json);
}

Результат:

    {
      "name": "Anna"
    }

Подстановка значений

Текстовый блок — обычная строка, поэтому к нему применим formatted():

void main() {
    String name = "Oleg";
    int total = 42;
 
    String message = """
            Hello, %s!
            Your total is %d €.
            """.formatted(name, total);
    IO.print(message);
}

Результат:

Hello, Oleg!
Your total is 42 €.

Без перевода строки в конце

Если закрывающие кавычки стоят на той же строке, что и текст, последнего перевода строки не будет. А \ в конце строки склеивает её со следующей:

void main() {
    String sql = """
            SELECT name \
            FROM users""";
    IO.println("[" + sql + "]");
}

Результат:

[SELECT name FROM users]

Частая ошибка

Начать текст сразу после открывающих кавычек. После """ обязательно должен идти перевод строки:

void main() {
    String text = """Hello
            """;
    IO.println(text);
}

Результат:

Main.java:2: error: illegal text block open delimiter sequence, missing line terminator

Функции из этого ответа

  • String.formatted() — Подставляет значения в саму строку как в шаблон — короткая форма String.format().
  • Text block """ — Многострочный строковый литерал в тройных кавычках.
  • String.lines() — Разбивает строку на строки по переводам строки и возвращает их потоком.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.