public static String format(String format, ParamResolver resolver) { if (format == null) { return null; } StringBuffer s = new StringBuffer(); Matcher m = paramPattern.matcher(format); while (m.find()) { String g = m.group(); if (m.start(1) != -1) { // Match on group 1, which is our parameter pattern; append a single '?' m.appendReplacement(s, resolver.resolveParam(g.substring(1, g.length() - 1))); } else { // Match on quoted strings, which we just copy as-is m.appendReplacement(s, g); } } m.appendTail(s); return s.toString(); }