como dijo usted va a desechar los resultados y reemplazar no toma una expresión regular solamente una secuencia de carbón literal para ser reemplazado por lo que don' t necesidad de escapar en el delimitador
pero replaceAll y replaceFirst toman una serie de expresiones regulares (mal diseño que)
y como un aparte es recomendable utilizar Patter.quote(String)
y Matcher.quoteReplacement(String)
para asegurar que ningún extraño las cosas están sucediendo al utilizar expresiones regulares (que es un poco más fácil y asegura que no hay error en escapar de los caracteres)
aquí es para cuando sólo una ocurrencia debe ser reemplazado
String delimiter = "**";
String html = "<html><head></head><body>**USERNAME** AND **PASSWORD**</body></html>";
Map<String, String> mp = new HashMap<String, String>();
mp.put("USERNAME", "User A");
mp.put("PASSWORD", "B");
for (Map.Entry<String, String> entry : mp.entrySet()) {
html = html.replace(delimiter + entry.getKey()+ delimiter, entry.getValue());
}
y aquí está para cuando múltiples ocurrencias deben ser reemplazados
String delimiter = "**";//unescaped because I'm handling that in my replace
String html = "<html><head></head><body>**USERNAME** AND **PASSWORD**</body></html>";
Map<String, String> mp = new HashMap<String, String>();
mp.put("USERNAME", "User A");
mp.put("PASSWORD", "B");
for (Map.Entry<String, String> entry : mp.entrySet()) {
html = html.replaceAll(Pattern.quote(delimiter + entry.getKey()+ delimiter), Matcher.quoteReplacement(entry.getValue()));
}
¿Cómo sabes que no está funcionando? No está imprimiendo ni almacenando en ninguna parte. – CoolBeans