我想搜索包含在${...}
中的字符串,並將這些字符串用作HashMap的鍵,該字符串包含我想用於替換${...}
的值。如何使用字符串替換的反向引用作爲Java中的HashMap的關鍵字?
在下面的例子中,字符串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 2014-10-06 08:07:32