, . , , , Velocity. . . .
, :
public static String replaceAll(String text, Map<String, String> params) {
return replaceAll(text, params, '%', '%');
}
public static String replaceAll(String text, Map<String, String> params,
char leading, char trailing) {
String pattern = "";
if (leading != 0) {
pattern += leading;
}
pattern += "(\\w+)";
if (trailing != 0) {
pattern += trailing;
}
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(text);
boolean result = m.find();
if (result) {
StringBuffer sb = new StringBuffer();
do {
String replacement = params.get(m.group(1));
if (replacement == null) {
replacement = m.group();
}
m.appendReplacement(sb, replacement);
result = m.find();
} while (result);
m.appendTail(sb);
return sb.toString();
}
return text;
}
:
String in = "Hi %FIRST_NAME% %LAST_NAME%.";
Map<String, String> params = new HashMap<String, String>();
params.put("FIRST_NAME", "John");
params.put("LAST_NAME", "Smith");
String out = replaceAll(in, params);
System.out.println(out);
:
Hi John Smith.