2009-12-09 38 views
2

我正在寻找一个漂亮的模板引擎或一小段代码来扩展Java中的字符串中的类Ant变量。例如:在文本中替换变量:建议?

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

应该至少支持java.util.Map但有些事,可以处理豆类或递归查询或查询中的地图列表/对象将是受欢迎的,太。

对此提出建议?

[编辑]回复TofuBeer:没有嵌套,只有{}内有效的Java标识符。任何超出${}的内容都应逐字复制。 $$应该变成$``. If that's not possible ${dollar}应该扩展为单个$(这样你可以表示15.00 $)。

+0

$,{或}可以出现在$ {....}中吗?要扩展的字符串是否有每个$ {....}用空格分隔?扩展的字符串是否具有除空格和$ {....}之外的其他字符? – TofuBeer 2009-12-09 10:14:56

+0

@TofuBeer:没有嵌套,只有在{}中有效的Java标识符。任何超出$ {}的内容都应该逐字复制。 $$应该变成$。如果这不可能,$ {dollar}应该扩大到一个“$”。 – 2009-12-09 13:18:40

回答

5

StrSubstitutorCommons Lang确实相当多,你要问什么

+0

+1非常好,因为我已经在我的构建路径郎! – 2009-12-09 13:21:14

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(); 
} 
+0

是的,StringTemplate是一个非常好,简单的引擎,但灵活。我正要发布这个答案,当我点击这个问题... Greetz, GHad – GHad 2009-12-09 10:29:53

0

看一看的Freemarker OCH速度,两者都是模板引擎