Форматирование строк в Java: замена переменных в шаблоне

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для форматирования строк в Java используйте метод String.format():

Java
Скопировать код
String name = "Джон";
int age = 25;
String formatted = String.format("Имя: %s, Возраст: %d", name, age);

Обратите внимание, %s используется для строк, в то время как %d – для целых чисел. Эти заполнители размещаются в тексте там, где нужно вставить переменные.

Кинга Идем в IT: пошаговый план для смены профессии

Размещение и форматирование переменных легко и просто

Знайте своё место: упорядоченные подстановки

Позиционные параметры позволяют управлять порядком расположения переменных:

Java
Скопировать код
// Волшебство Револьвера Оцелота
String formatted = String.format("%2$s, возраст – %1$d лет.", age, name);

%2$s указывает на второй аргумент, а %1$d – на первый.

Нужна интернационализация? MessageFormat к вашим услугам

Для сложного или локализованного форматирования строк используйте java.text.MessageFormat.format:

Java
Скопировать код
// Приветствия на разных языках
String pattern = "{0}, возраст – {1} лет.";
String formatted = MessageFormat.format(pattern, name, age);

Использование индексированных переменных, таких как {0} и {1}, облегчает поддержание интернационализации (i18n).

Гладкое форматирование с String#formatted

С появлением Java 15 был представлен метод String#formatted, который обеспечивает элегантное и четкое форматирование строк:

Java
Скопировать код
// Изящество балерины
String formatted = "Имя: %s, Возраст: %d".formatted(name, age);

Оптимальное соединение строк: выберите свою стратегию

Конкатенация с помощью StringBuilder

StringBuilder идеально подходит для эффективной конкатенации строк:

Java
Скопировать код
// Строим свою Утопию
StringBuilder sb = new StringBuilder();
sb.append("Имя: ").append(name).append(", Возраст: ").append(age);
String formatted = sb.toString();

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

Конкатенация с использованием '+'

Для большей ясности и простоты иногда используют конкатенацию через '+':

Java
Скопировать код
// Приоритетность четкости мысли
String formatted = "Имя: " + name + ", Возраст: " + age;

Метод может не быть самым производительным, но зато он простой и удобный.

Изящные Varargs и Autoboxing в Java 1.5 и далее

Вариативные аргументы и автоупаковка обеспечивают современный и удобный способ форматирования:

Java
Скопировать код
// Веяние свежести эпохи
String formatted = MessageFormat.format("{0}, возраст примерно {1} лет.", name, age);

Autoboxing упрощает преобразование чисел в объекты, а varargs добавляет гибкости в число параметров.

Учет множественных чисел в i18n с помощью MessageFormat

MessageFormat предлагает изящные решения для форматирования строк с учетом числа объектов и особенностей языка:

Java
Скопировать код
// С уважением к грамматическим нормам
String pattern = "{0} {0,choice,0#автомобилей|1#автомобиль|1<автомобиля}";
String formatted = MessageFormat.format(pattern, carCount);

Это позволяет корректно обрабатывать числительные, в зависимости от числа объектов.

Исследование неизведанных земель форматирования строк

Шарм Apache Commons

Apache Commons предлагает расширенные возможности форматирования строк, недоступные в стандартном наборе инструментов JDK:

Java
Скопировать код
// В поисках экзотики за пределами JDK
String formatted = StringEscapeUtils.escapeJava("Строка для экранирования");

Объектно-ориентированный подход с Cactoos

Cactoos – это выбор эстетов объектно-ориентированного программирования:

Java
Скопировать код
// Когда стремишься к идеальному порядку
String formatted = new FormattedText("Имя: %s", name).asString();

Полезные материалы

  1. Примеры форматирования строк в Java: Издание 2021 – DZone — Подробное руководство по форматированию строк с примерами.
  2. Formatter (Java Platform SE 8 ) — Официальная документация класса Formatter.
  3. String (Java Platform SE 8 ) — Детальная информация о классе String.
  4. Учебник | DigitalOcean — Обучающий курс по применению метода String.format().
  5. Форматирование числового вывода при печати (Учебники Java™ > Обучение языку Java > Числа и строки) — Советы по форматированию чисел и строк от Oracle.