Форматирование строк в Java: замена переменных в шаблоне
Быстрый ответ
Для форматирования строк в Java используйте метод String.format()
:
String name = "Джон";
int age = 25;
String formatted = String.format("Имя: %s, Возраст: %d", name, age);
Обратите внимание, %s
используется для строк, в то время как %d
– для целых чисел. Эти заполнители размещаются в тексте там, где нужно вставить переменные.
Размещение и форматирование переменных легко и просто
Знайте своё место: упорядоченные подстановки
Позиционные параметры позволяют управлять порядком расположения переменных:
// Волшебство Револьвера Оцелота
String formatted = String.format("%2$s, возраст – %1$d лет.", age, name);
%2$s
указывает на второй аргумент, а %1$d
– на первый.
Нужна интернационализация? MessageFormat
к вашим услугам
Для сложного или локализованного форматирования строк используйте java.text.MessageFormat.format
:
// Приветствия на разных языках
String pattern = "{0}, возраст – {1} лет.";
String formatted = MessageFormat.format(pattern, name, age);
Использование индексированных переменных, таких как {0}
и {1}
, облегчает поддержание интернационализации (i18n).
Гладкое форматирование с String#formatted
С появлением Java 15 был представлен метод String#formatted
, который обеспечивает элегантное и четкое форматирование строк:
// Изящество балерины
String formatted = "Имя: %s, Возраст: %d".formatted(name, age);
Оптимальное соединение строк: выберите свою стратегию
Конкатенация с помощью StringBuilder
StringBuilder
идеально подходит для эффективной конкатенации строк:
// Строим свою Утопию
StringBuilder sb = new StringBuilder();
sb.append("Имя: ").append(name).append(", Возраст: ").append(age);
String formatted = sb.toString();
Этот метод работает быстро, но при большом количестве операций может стать запутанным.
Конкатенация с использованием '+'
Для большей ясности и простоты иногда используют конкатенацию через '+':
// Приоритетность четкости мысли
String formatted = "Имя: " + name + ", Возраст: " + age;
Метод может не быть самым производительным, но зато он простой и удобный.
Изящные Varargs и Autoboxing в Java 1.5 и далее
Вариативные аргументы и автоупаковка обеспечивают современный и удобный способ форматирования:
// Веяние свежести эпохи
String formatted = MessageFormat.format("{0}, возраст примерно {1} лет.", name, age);
Autoboxing упрощает преобразование чисел в объекты, а varargs добавляет гибкости в число параметров.
Учет множественных чисел в i18n с помощью MessageFormat
MessageFormat
предлагает изящные решения для форматирования строк с учетом числа объектов и особенностей языка:
// С уважением к грамматическим нормам
String pattern = "{0} {0,choice,0#автомобилей|1#автомобиль|1<автомобиля}";
String formatted = MessageFormat.format(pattern, carCount);
Это позволяет корректно обрабатывать числительные, в зависимости от числа объектов.
Исследование неизведанных земель форматирования строк
Шарм Apache Commons
Apache Commons предлагает расширенные возможности форматирования строк, недоступные в стандартном наборе инструментов JDK:
// В поисках экзотики за пределами JDK
String formatted = StringEscapeUtils.escapeJava("Строка для экранирования");
Объектно-ориентированный подход с Cactoos
Cactoos – это выбор эстетов объектно-ориентированного программирования:
// Когда стремишься к идеальному порядку
String formatted = new FormattedText("Имя: %s", name).asString();
Полезные материалы
- Примеры форматирования строк в Java: Издание 2021 – DZone — Подробное руководство по форматированию строк с примерами.
- Formatter (Java Platform SE 8 ) — Официальная документация класса Formatter.
- String (Java Platform SE 8 ) — Детальная информация о классе
String
. - Учебник | DigitalOcean — Обучающий курс по применению метода
String.format()
. - Форматирование числового вывода при печати (Учебники Java™ > Обучение языку Java > Числа и строки) — Советы по форматированию чисел и строк от Oracle.