Il est relativement simple d'écrire du code pour cela. Si c'est quelque chose que vous allez faire beaucoup mais vous pouvez vouloir utiliser une bibliothèque existante comme Velocity. Il utilise cependant une syntaxe différente pour les valeurs. Voir Getting Started.
Si vous voulez écrire vous-même essayer:
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;
}
Par exemple:
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);
Sortie:
Hi John Smith.
+1 pour la question -2 pour la réponse sélectionnée – Jordie