类模板语言的变量替换 不指定

Heck post in 学习心得 2017/02/27 14:40 评论(0) 阅读(174) | |
  有一个邮件模板,例如:
亲爱的用户${name},你好,欢迎加入xx系统平台。这种简单的不想去依赖freemarker、velocity这种模板引擎框架,所以自己用正则实现了,如下:

  /**
     * 替换模板标签变量
     *
     * @param params        变量键值
     * @param templetConent 模板内容
     * @return
     */
    public String replaceTempletTags(SmsParams params, String templetConent) {
        String smsContent;
        try {
            //生成匹配模式的正则表达式
            String patternString = "\\$\\{(" + StringUtils.join(params.getSmsParam().keySet(), "|") + ")\\}";

            Pattern pattern = Pattern.compile(patternString);
            Matcher matcher = pattern.matcher(templetConent);

            //两个方法:appendReplacement, appendTail
            StringBuffer sb = new StringBuffer();
            while (matcher.find()) {
                matcher.appendReplacement(sb, params.getSmsParam().get(matcher.group(1)).toString());
            }
            matcher.appendTail(sb);
            smsContent = sb.toString();
        } catch (Exception e) {
            throw new RuntimeException("解析模板并替换标签值时失败!" + e);
        }
        return smsContent;
    }

来源:Heck's Blog
地址:http://www.hecks.tk/post/447/
转载时须以链接形式注明作者和原始出处及本声明,否则将追究法律责任,谢谢配合!