#java #string-formatting
#java #форматирование строки
Вопрос:
slf4j Logger имеет чистый синтаксис форматирования. (Использование фигурных скобок)
org.slf4j.Logger.error("Invalid value1={} for value2={}", value1, value1)
Имеет ли приведенный ниже метод аналогичную альтернативу? Я хочу универсальный ({}) вместо заполнителя для конкретного типа.
String.format("Invalid value1=%d for value2=%d", value1, value1)
Комментарии:
1. Вы можете использовать
%s
в.format
. Это не зависит от типа.2. @khelwood как это не зависит от типа, когда он принимает строковые представления для переданных объектов?
3. @dbl и что, по-твоему
{}
, делает?4. Я ничего не думаю, скорее я проверяю документы. Приведенное выше утверждение неверно :), Хотя в этом случае это наиболее подходящая замена.
's', 'S' general If the argument arg is null, then the result is "null". If arg implements Formattable, then arg.formatTo is invoked. Otherwise, the result is obtained by invoking arg.toString().
5. Вы создаете сообщение. Получение строкового представления объектов — это именно то, что вы пытаетесь сделать. И это то, что
{}
делает в регистраторе.
Ответ №1:
Вы можете использовать String.format
с %s
.
String.format("Invalid value1=%s for value2=%s", value1, value1)
%s
работает для всех типов, так же {}
, как и в вашем регистраторе. Он преобразует любой заданный аргумент в строку, которая, похоже, соответствует именно вашему требованию.
Ответ №2:
Вы могли бы использовать MessageFormat, если хотите, хотя вам нужно будет указать номера аргументов:
MessageFormat.format("Invalid value1={0} for value2={1}", value1, value2);
Комментарии:
1.
%s
Было бы лучше соответствовать в контексте OP.