Я знаю, что мой ответ приходит с небольшим опозданием, но если вам все еще нужна эта функциональность, без необходимости загружать полноценный шаблонизатор, вы можете взглянуть на aleph-formatter (я одинавторов):
Student student = new Student("Andrei", 30, "Male");
String studStr = template("#{id}\tName: #{st.getName}, Age: #{st.getAge}, Gender: #{st.getGender}")
.arg("id", 10)
.arg("st", student)
.format();
System.out.println(studStr);
Или вы можете связать аргументы:
String result = template("#{x} + #{y} = #{z}")
.args("x", 5, "y", 10, "z", 15)
.format();
System.out.println(result);
// Output: "5 + 10 = 15"
Внутренне это работает с использованием StringBuilder, создавая результат путем "разбора" выражения, без объединения строк,выполняется регулярное выражение / замена.