Для квалифицированного разработчика Java нет более распространенного способа форматирования строки, чем использование String.format
для выполнения строки форматирования, которую вы хотите использовать в своей работе.
Однако с заполнителем %s
в строке его действительно не так просто использовать. Это заставляет меня хотеть избавиться от него.
String.format("hi %s. ", "John");
Однажды мне стало любопытно, потому что набирать {}
в логах в качестве разделителя очень удобно! Я также должен иметь возможность использовать его напрямую!
Конечно же, пакет slf4j-api
предоставляет очень хороший класс форматирования org.slf4j.helpers.MessageFormatter
.
Обратите внимание: не используйте неправильный класс, поскольку в JDK есть класс
java.text.MessageFormat
, его использование может сильно отличаться.
1. Импорт пакета
Поскольку я все еще использую Java 11, я буду использовать 1.x
версию slf4j-api
.
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.36</version> </dependency>
2. Использование
Самый быстрый способ использовать инструмент — просмотреть его комментарии, которые, скорее всего, содержат примеры и подробные описания.
Как только мы попадаем в класс MessageFormatter
, мы можем увидеть несколько небольших, простых примеров и описаний, которые выделяются.
Символ {}
описан в классе как «якорь», заполнитель для параметров.
2.1 Простая замена
С помощью простого правила подстановки для замены одного или нескольких параметров оно уже подходит для большинства повседневных сценариев!
MessageFormatter.format("Hi {}.", "John").getMessage(); # output Hi john
2.2 Недопустимые заполнители
Обычно вы можете соединять строки с {}
символами, например, {a,b,c}
строк с буквами в середине, вы можете просто аннулировать заполнители.
MessageFormatter.format("Set {a,b,c} is not equal to {}.", "b,c").getMessage(); # output Set {a,b,c} is not equal to {b,c}.