Ответ 1
См. String.format
метод.
String s = "hello %s!";
s = String.format(s, "world");
assertEquals(s, "hello world!"); // should be true
Я ищу что-то для достижения следующего:
String s = "hello {}!";
s = generate(s, new Object[]{ "world" });
assertEquals(s, "hello world!"); // should be true
Я мог бы написать это сам, но мне кажется, что я видел библиотеку, когда это делалось, вероятно, это был журнал slf4j, но я не хочу писать сообщения журнала. Я просто хочу генерировать строки.
Знаете ли вы о библиотеке, которая это делает?
См. String.format
метод.
String s = "hello %s!";
s = String.format(s, "world");
assertEquals(s, "hello world!"); // should be true
StrSubstitutor
от Apache Commons Lang может использоваться для форматирования строк с именованными заполнителями:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.1</version>
</dependency>
Заменяет переменные в строке по значениям.
Этот класс берет фрагмент текста и заменяет все переменные внутри. Определение переменной по умолчанию - ${variableName}. Префикс и суффикс могут быть изменены с помощью конструкторов и методов набора.
Переменные значения обычно разрешаются с карты, но также могут быть разрешено из свойств системы или путем предоставления настраиваемой переменной распознаватель.
Пример:
String template = "Hi ${name}! Your number is ${number}";
Map<String, String> data = new HashMap<String, String>();
data.put("name", "John");
data.put("number", "1");
String formattedString = StrSubstitutor.replace(template, data);
Существует два решения:
Formatter
является более поздним, хотя ему требуется printf()
, которому 40 лет...
Ваш дескриптор, который вы сейчас определяете, может использовать один MessageFormat
, но зачем использовать антикварную технику?;) Используйте Formatter
.
Существует еще больше причин использовать Formatter
, чтобы избежать одиночных кавычек! MessageFormat
требует от вас этого. Кроме того, Formatter
имеет ярлык через String.format()
для генерации строк, а PrintWriter
имеет .printf()
(который включает в себя System.out
и System.err
, которые по умолчанию являются PrintWriter
)
Если вы можете изменить формат своего заполнителя, вы можете использовать String.format()
. Если нет, вы также можете заменить его как предварительную обработку.
String.format("hello %s!", "world");
Дополнительная информация в этом другом потоке.
Вам не понадобится библиотека; если вы используете последнюю версию Java, посмотрите String.format
:
String.format("Hello %s!", "world");
Если вы можете терпеть другой тип заполнителя (т.е. %s
вместо {}
), вы можете использовать метод String.format
для этого:
String s = "hello %s!";
s = String.format(s, "world" );
assertEquals(s, "hello world!"); // true