Ersetzen Sie Variablen in Text: Verbesserungsvorschläge?
-
18-09-2019 - |
Frage
Ich bin auf der Suche nach einem netten Template-Engine oder kurzes Stück Code Ant-ähnliche Variablen in einem String in Java zu erweitern. Beispiel:
String result = expand ("${firstName} ${familyName}", map);
Es sollte zumindest Unterstützung java.util.Map
sondern etwas, das Bohnen oder rekursive Abfragen oder Abfragen in einer Liste von Karten verarbeiten kann / Objekte auch willkommen wäre.
Verbesserungsvorschläge?
[EDIT] In Antwort auf TofuBeer: Keine Verschachtelung, nur gültige Java Bezeichner innerhalb des {}
. Alles, was außerhalb von ${}
sollte wörtlich kopiert werden. $$
sollte sich $``. If that's not possible ${dollar}
zu einem einzigen $
erweitern sollte (so können Sie 15.00 $
ausdrücken).
Lösung
StrSubstitutor von Commons Lang macht ziemlich genau, was Sie für
Andere Tipps
String um expand
zu implementieren:
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();
}
Hier finden Sie aktuelle Freemarker och Geschwindigkeit, beide sind Template-Engines