轻量的邮件、短信模板渲染功能

有时候就是需要一个很简单的模板渲染功能,就是一些固定的参数,然后将参数替换掉。如邮件模板、短信模板等等,这些模板内容比较单一,文字不多,变量类型单一,同时没有上下文的约束。如果我们使用如 velocity 这类模板引擎来做这个事情,相对来说还是重了一点。其实这类功能还是比较简单的,完全可以手写。以下是我写的一个方法,欢迎指正和学习,留言全接。

 

public class RenderUtils {

    private static final Pattern p = Pattern.compile("\\$\\{\\s*([a-zA-Z0-9_\\-]+)\\s*\\}");

    public static String renderText(String templateContent, Map<String, String> params) {
        if (StringUtils.isBlank(templateContent)) {
            return null;
        }
        if (params == null || params.isEmpty()) {
            return templateContent.toString();
        }
        StringBuffer sb = new StringBuffer();
        try {
            Matcher matcher = p.matcher(templateContent);
            while (matcher.find()) {
                int groupCount = matcher.groupCount();
                if (groupCount < 1) {
                    continue;
                }
                //String group0 = matcher.group(0);
                String group1 = matcher.group(1);
                String replacement;
                if (params.containsKey(group1)) {
                    replacement = params.get(group1).toString();
                } else {
                    replacement = "[-no value for '" + group1 + "'-]";
                }
                matcher.appendReplacement(sb, replacement);
            }
            matcher.appendTail(sb);
        } catch (Exception e) {
            e.printStackTrace();
            return templateContent.toString();
        }
        return sb.toString();
    }
}

这里的功能不强大,但是够用。就是将 ${abc} 作为一个需要替换的内容,一旦参数中有 key=abc 的内容,就会将其替换。

支持 ${abc} 或者 ${ abc }, 中间允许一个或多个空格。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值