Java - Включая переменные в строках? - PullRequest
87 голосов
/ 10 марта 2012

Хорошо, поэтому мы все должны знать, что вы можете включить переменные в строки, выполнив:

String string = "A string " + aVariable;

Есть ли способ сделать это как:

String string = "A string {aVariable}";

Другими словами: Без закрытия кавычек и добавления плюсов Это очень непривлекательно.

Ответы [ 3 ]

98 голосов
/ 10 марта 2012

Вы всегда можете использовать String.format (....). то есть.,

String string = String.format("A String %s %2d", aStringVar, anIntVar);

Я не уверен, достаточно ли это привлекательно для вас, но это может быть очень удобно. Синтаксис такой же, как для printf и java.util.Formatter. Я использовал это особенно, если я хочу показать табличные числовые данные.

56 голосов
/ 10 марта 2012

Это называется интерполяцией строк;он не существует как таковой в Java.

Один подход заключается в использовании String.format:

String string = String.format("A string %s", aVariable);

Другой подход заключается в использовании библиотеки шаблонов, такой как Velocity * 1007.* или FreeMarker .

28 голосов
/ 10 марта 2012

Также рассмотрим java.text.MessageFormat, который использует связанный синтаксис, имеющий числовые индексы аргументов. Например,

String aVariable = "of ponies";
String string = MessageFormat.format("A string {0}.", aVariable);

приводит к string, содержащему следующее:

A string of ponies.

Чаще всего класс используется для числового и временного форматирования. Пример JFreeChart форматирования метки описан здесь ; класс RCInfo форматирует панель состояния игры.

...