我正在寻找一个很好的模板引擎或一小段代码来在Java中的字符串中扩展类似Ant的变量。例如:
String result = expand ("${firstName} ${familyName}", map);
它至少应该支持java.util.Map
,但是也欢迎能够在地图/对象列表中处理bean或递归查找或查找的东西。
建议?
[编辑]回复TofuBeer:没有嵌套,只有{}
内的有效Java标识符。 ${}
以外的任何内容都应逐字复制。 $$
应该$``. If that's not possible ${dollar}
应该扩展为单$
(因此您可以表达15.00 $
)。
答案 0 :(得分:5)
Commons Lang几乎可以满足您的要求
答案 1 :(得分:1)
使用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();
}
答案 2 :(得分:0)
看看Freemarker och Velocity,它们都是模板引擎