Is there is any API which replace template string along with values using Spring or java.
For example:
Dear %FIRST_NAME% %LAST_NAME%,
---- remaining
Usage:
replaceAll(string,
"param1", "value 1",
"param12", "value 12");
Implementation:
public static String replaceAll(String text, Object... replacements) {
Assert.isTrue(replacements.length % 2 == 0, "Is not key - value pairs: " + replacements);
Map< String, String> longToShortNamesMap = new TreeMap<>(new Comparator() {
@Override
public int compare(String o1, String o2) {
return o1.length() == o2.length() ? o1.compareTo(o2) : o2.length() - o1.length();
}
});
for (int i = 0; i < replacements.length; i += 2) {
longToShortNamesMap.put(Objects.toString(replacements[i]), Objects.toString(replacements[i+1]));
}
String result = text;
for (String key : longToShortNamesMap.keySet()) {
Assert.isTrue(text.contains(key), "Can not find key in the text " + key);
result = result.replaceAll(key, longToShortNamesMap.get(key));
}
return result;
}