Подтвердить что ты не робот

Java генерирует строки с заполнителями

Я ищу что-то для достижения следующего:

String s = "hello {}!";
s = generate(s, new Object[]{ "world" });
assertEquals(s, "hello world!"); // should be true

Я мог бы написать это сам, но мне кажется, что я видел библиотеку, когда это делалось, вероятно, это был журнал slf4j, но я не хочу писать сообщения журнала. Я просто хочу генерировать строки.

Знаете ли вы о библиотеке, которая это делает?

4b9b3361

Ответ 1

См. String.format метод.

String s = "hello %s!";
s = String.format(s, "world");
assertEquals(s, "hello world!"); // should be true

Ответ 2

StrSubstitutor от Apache Commons Lang может использоваться для форматирования строк с именованными заполнителями:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-text</artifactId>
    <version>1.1</version>
</dependency>

https://commons.apache.org/proper/commons-lang/javadocs/api-3.4/org/apache/commons/lang3/text/StrSubstitutor.html:

Заменяет переменные в строке по значениям.

Этот класс берет фрагмент текста и заменяет все переменные внутри. Определение переменной по умолчанию - ${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);

Ответ 3

Существует два решения:

Formatter является более поздним, хотя ему требуется printf(), которому 40 лет...

Ваш дескриптор, который вы сейчас определяете, может использовать один MessageFormat, но зачем использовать антикварную технику?;) Используйте Formatter.

Существует еще больше причин использовать Formatter, чтобы избежать одиночных кавычек! MessageFormat требует от вас этого. Кроме того, Formatter имеет ярлык через String.format() для генерации строк, а PrintWriter имеет .printf() (который включает в себя System.out и System.err, которые по умолчанию являются PrintWriter)

Ответ 4

Если вы можете изменить формат своего заполнителя, вы можете использовать String.format(). Если нет, вы также можете заменить его как предварительную обработку.

String.format("hello %s!", "world");

Дополнительная информация в этом другом потоке.

Ответ 5

Вам не понадобится библиотека; если вы используете последнюю версию Java, посмотрите String.format:

String.format("Hello %s!", "world");

Ответ 6

Если вы можете терпеть другой тип заполнителя (т.е. %s вместо {}), вы можете использовать метод String.format для этого:

String s = "hello %s!";
s = String.format(s, "world" );
assertEquals(s, "hello world!"); // true