替换文本中的变量:建议?

时间:2009-12-09 10:01:24

标签: java string variable-expansion

我正在寻找一个很好的模板引擎或一小段代码来在Java中的字符串中扩展类似Ant的变量。例如:

String result = expand ("${firstName} ${familyName}", map);

它至少应该支持java.util.Map,但是也欢迎能够在地图/对象列表中处理bean或递归查找或查找的东西。

建议?

[编辑]回复TofuBeer:没有嵌套,只有{}内的有效Java标识符。 ${}以外的任何内容都应逐字复制。 $$应该$``. If that's not possible ${dollar}应该扩展为单$(因此您可以表达15.00 $)。

3 个答案:

答案 0 :(得分:5)

来自StrSubstitutor

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,它们都是模板引擎