Шаблонизатор/форматер строк Java с именованными аргументами

Существует ли стандартная или хотя бы широко распространенная реализация чего-то вроде String.format, но с именованными аргументами?

Я хотел бы отформатировать шаблонную строку таким образом:

Map<String, Object> args = new HashMap<String, Object>();
args.put("PATH", "/usr/bin");
args.put("file", "foo");
String s = someHypotheticalMethod("#{PATH}/ls #{file}");
// "/usr/bin/ls foo"

Технически это почти то же самое, что и :

String[] args = new String[] { "/usr/bin", "foo" };
String s = String.format("%1$s/ls %2$s", args);
// "/usr/bin/ls foo"

. но с именованными аргументами.

Я в курсе:

но все они используют упорядоченные или, по крайней мере, пронумерованные аргументы, а не именованные. Я знаю, что это тривиально реализовать, но есть ли механизм, который я ищу в стандартных библиотеках Java или, по крайней мере, в Apache Commons / Guava / чем-то подобном, без привлечения шаблонизаторов с высоким -профилем?

ПРИМЕЧАНИЕ:Меня не очень интересуют полноценные -механизмы шаблонов с такими функциями, как императивная/функциональная логика, управление потоком, модификаторы, под-шаблоны/включения, итераторы и т. д. Обычно следующий метод является рабочим 4 -реализация строки -это все, что мне нужно:

public static String interpolate(String format, Map<String, ? extends Object> args) {
    String out = format;
    for (String arg : args.keySet()) {
        out = Pattern.compile(Pattern.quote("#{" + arg + "}")).
                matcher(out).
                replaceAll(args.get(arg).toString());
    }
    return out;
}
9
задан GreyCat 29 June 2012 в 19:22
поделиться