Я хотел бы найти строки, которые заключены в ${...}
, и использовать эти строки как ключи для HashMap, который содержит значения, которые я хотел бы использовать для замены ${...}
.Как использовать обратную ссылку для замены строки в качестве ключа для HashMap в Java?
В следующем примере строка Master_${field1}_${field2}_End
должна быть преобразована в Master_slave1_slave2_End
:
package com.stackoverflow;
import java.util.HashMap;
import java.util.Map;
public class RegExReplace {
public static void main(String[] args) {
// String string = "Master_${field1}_${field2}_${nonexisting}_End";
String string = "Master_${field1}_${field2}_End";
Map<String, String> toBeInserted = new HashMap<String, String>();
toBeInserted.put("field1", "slave1");
toBeInserted.put("field2", "slave2");
toBeInserted.put("field3", "slave3");
String pattern = "\\$\\{([a-zA-Z0-9\\-_]*)\\}";
String replace = "$1";
// System.out.println(string.replaceAll(pattern, replace));
System.out.println(string.replaceAll(pattern, toBeInserted.get(replace)));
} // END: main()
} // END: class
(Как) это возможно, использовать в качестве обратной ссылки ключа для HashMap?
Вы можете создать другую строку: 'String mapKey = string.replaceAll (pattern," $ 1 ")', а затем использовать 'mapKey' во второй замене – BackSlash