Java替换字符串模板

2018/11/20 Java

最近在做Spring boot项目,需要在yml设置文字模板,内部用数据填充,于是需要灵活的Java替换字符串模板的方式,网上找了下,分享给大家一个好的方法。

工具方法,使用Java自带的正则匹配,替换模板字符串指定数据。

private static Pattern pattern = Pattern.compile("\\$\\{\\w+\\}");

public static String processTemplate(String template, Map<String, Object> params){
    StringBuffer sb = new StringBuffer();
    Matcher m = pattern.matcher(template);
    while (m.find()) {
        String param = m.group();
        Object value = params.get(param.substring(2, param.length() - 1));
        m.appendReplacement(sb, value==null ? "" : value.toString());
    }
    m.appendTail(sb);
    return sb.toString();
}

数据包装采用hashMap

Map map = new HashMap();
map.put("name", "robot");
map.put("age", String.format("%.2f", 22.1));
map.put("point", 70);
String message = processTemplate("您好${name},晚上好!您目前寿命:${age}年,贡献:${point}分", map);

这里通过key值进行匹配,可以解决

String.format

固定顺序的问题

最终输出如下

您好robot,晚上好!您目前寿命:22.10年,贡献:70分

参考文章

java 替换字符串模板(模板渲染

Search

    Table of Contents