Заменить переменные в тексте: предложения?
Я ищу хороший шаблонизатор или небольшой кусок кода для расширения Ant-подобных переменных в строке в Java. Пример:
String result = expand ("${firstName} ${familyName}", map);
Должен хотя бы поддерживать java.util.Map
но что-то, что может обрабатывать бины или рекурсивные поиски или поиски в списке карт / объектов, также будет приветствоваться.
Предложения?
[EDIT] В ответ на TofuBeer: нет вложенности, только допустимые идентификаторы Java в пределах {}
, Что-нибудь за пределами ${}
должен быть скопирован дословно. $$
должен стать $``. If that's not possible ${dollar}
следует расширить до одного $
(так что вы можете выразить 15.00 $
).
3 ответа
StrSubstitutor от Commons Lang делает в основном то, что вы просите
Используйте StringTemplate для реализации expand
:
void expand(String template, Map<String,String> map) {
StringTemplate st = new StringTemplate(template);
for (Map.Entry<String, String> attribute : map) {
st.setAttribute(attribute.getKey(), attribute.getValue());
}
return st.toString();
}
Взгляните на Freemarker и Velocity, оба они являются шаблонными движками