curly brackets Number Replace

過去に書いていそうで、今まで書いてなかった 中括弧 "{ } " これは curly bracketsと呼ぶのかな?
で囲んだ数値の文字列変換、
java.text.MessageFormatformat メソッドを使えば済むことではあるが、
簡単なことなので書いておく。

テンプレート

abc {0} def {1} 123 {0} {2}

これに、"A", 200, "C" と、順に {0}.{1}.{2} を置換した期待値は、、

abc A def 200 123 A C

注意して置換しないと 上のように {0} が2回現れたりした時に期待どおり置換しない処理を書いてしまいそうだ。
次のメソッドがベストのような気がする。

public static String replaceBracketsNumber(String template, Object...rep) {
    Objects.requireNonNull(template);
    String s = template;
    Matcher m = Pattern.compile("\\{\\d+\\}").matcher(template);
    while(m.find()){
        int n = Integer.parseInt(m.group().substring(1, m.group().length()-1));
        if (n < rep.length) {
            s = s.replace(m.group(), rep[n].toString());
        }
    }
    return s;
}

サンプル

String template = "abc {0} def {1} 123 {0} {2}";
String res = replaceBracketsNumber(template, "A", 200, "C");