正则表达式匹配模式但替换为不同的值

时间:2013-12-23 08:04:49

标签: java regex

我有一个像"${f1}:blah blah ${f2} blah ${f1}"这样的字符串。我有Map<String, String> "f1""f2"作为键。

我想将字符串中的"${f1}""${f2}"等替换为地图中给出的相应值。

我如何用Java做到这一点?我几乎没有使用Java正则表达式的经验。

3 个答案:

答案 0 :(得分: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()));

        }

答案 1 :(得分: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

答案 2 :(得分:-2)

此类问题已在SO上提出过。你需要看到THIS