Sostituire le variabili nel testo: suggerimenti?
-
18-09-2019 - |
Domanda
sto cercando un bel motore di template o corto pezzo di codice per espandere le variabili Ant-come in una stringa in Java. Esempio:
String result = expand ("${firstName} ${familyName}", map);
Si dovrebbe almeno sostegno java.util.Map
ma qualcosa in grado di gestire fagioli o ricerche ricorsive o le ricerche in un elenco di mappe / oggetti sarebbe il benvenuto, anche.
Suggerimenti?
[EDIT] In risposta a TofuBeer: Nessun nidificazione, identificatori Java soltanto validi sul {}
. Tutto ciò al di fuori di ${}
deve essere copiato parola per parola. $$
dovrebbe diventare $``. If that's not possible ${dollar}
dovrebbe espandersi ad un unico $
(in modo da poter esprimere 15.00 $
).
Soluzione
StrSubstitutor da Commons Lang fa più o meno quello che stai chiedendo
Altri suggerimenti
StringTemplate al fine di attuare 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();
}
Date un'occhiata al Freemarker och Velocity, entrambi sono i motori di template