2009-12-09 35 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速度,兩者都是模板引擎