2013-12-23 17 views
0

我有一個字符串,如"${f1}:blah blah ${f2} blah ${f1}"。我有一個Map<String, String>"f1""f2"作爲鍵。正則表達式匹配模式,但用不同的值替換

我想用字符串中的相應值替換字符串中的"${f1}""${f2}"等。

我該如何在Java中做到這一點?我幾乎沒有任何Java正則表達式的經驗。

+0

開始閱讀。然後轉向嘗試。當你陷入困境時,給我們一個具體的例子。祝你好運。 –

回答

-1

這種類型的問題已經被問的SO。你需要看到THIS

+0

其他人建議使用替換循環。這似乎太昂貴了。另一方面,該鏈接找出所有$ {f1} $ {f2}等並相應地替換它們。所以你最終不會遍歷同一個字符串多次。 – anindyaju99

0

試試這個

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())); 

     } 
0

你可以做這樣

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