Reemplazar variables en el texto: Sugerencias?
-
18-09-2019 - |
Pregunta
Estoy buscando un motor de plantillas agradable o pequeño fragmento de código para expandir las variables como hormigas en una cadena en Java. Ejemplo:
String result = expand ("${firstName} ${familyName}", map);
Debe al menos java.util.Map
apoyo, sino algo que se puede manejar frijoles o búsquedas recursivas o las búsquedas en una lista de mapas / objetos sería bienvenido, también.
Sugerencias?
[Editar] en respuesta a TofuBeer: No, identificadores Java válidas sólo dentro de la anidación {}
. Cualquier cosa fuera de ${}
se debe copiar palabra por palabra. $$
debe convertirse en $``. If that's not possible ${dollar}
debe ampliar a un solo $
(por lo que puede expresar 15.00 $
).
Solución
StrSubstitutor de Commons Lang hace bastante más de lo que está pidiendo
Otros consejos
StringTemplate con el fin de poner en práctica 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();
}
Tener un vistazo a Freemarker velocidad och, ambos son motores de plantilla