Is there any String
replacement mechanism in Java, where I can pass objects with a text, and it replaces the string as it occurs.
For example, the text is :
Hello ${user.name},
Welcome to ${site.name}.
The objects I have are "user"
and "site"
. I want to replace the strings given inside ${}
with its equivalent values from the objects. This is same as we replace objects in a velocity template.
Use StringSubstitutor
from Apache Commons Text.
https://commons.apache.org/proper/commons-text/
It will do it for you (and its open source...)
Map<String, String> valuesMap = new HashMap<String, String>();
valuesMap.put("animal", "quick brown fox");
valuesMap.put("target", "lazy dog");
String templateString = "The ${animal} jumped over the ${target}.";
StringSubstitutor sub = new StringSubstitutor(valuesMap);
String resolvedString = sub.replace(templateString);