我有一個字符串,如"${f1}:blah blah ${f2} blah ${f1}"
。我有一個Map<String, String>
與"f1"
,"f2"
作爲鍵。正則表達式匹配模式,但用不同的值替換
我想用字符串中的相應值替換字符串中的"${f1}"
,"${f2}"
等。
我該如何在Java中做到這一點?我幾乎沒有任何Java正則表達式的經驗。
我有一個字符串,如"${f1}:blah blah ${f2} blah ${f1}"
。我有一個Map<String, String>
與"f1"
,"f2"
作爲鍵。正則表達式匹配模式,但用不同的值替換
我想用字符串中的相應值替換字符串中的"${f1}"
,"${f2}"
等。
我該如何在Java中做到這一點?我幾乎沒有任何Java正則表達式的經驗。
這種類型的問題已經被問的SO。你需要看到THIS。
其他人建議使用替換循環。這似乎太昂貴了。另一方面,該鏈接找出所有$ {f1} $ {f2}等並相應地替換它們。所以你最終不會遍歷同一個字符串多次。 – anindyaju99
試試這個
for (Entry<String, String> e : map.entrySet()) {
String test="${f1}:blah blah ${f2} blah ${f1}";
System.out.println(test.replace("${f2}", e.getValue()).replace("${f1}", e.getKey()));
}
你可以做這樣
String str = "${f1}:blah blah ${f2} blah ${f1}";
Map<String, String> map = new HashMap<String, String>();
map.put("\\$\\{f1\\}", "xxxx");
map.put("\\$\\{f2\\}", "yyyy");
for (Map.Entry entry: map.entrySet()) {
str = str.replaceAll((String)entry.getKey(), (String)entry.getValue());
}
System.out.println(str);
輸出是:
xxxx:blah blah yyyy blah xxxx
開始閱讀。然後轉向嘗試。當你陷入困境時,給我們一個具體的例子。祝你好運。 –