java后台自定义解析模板

package com.hx.slj.modules.zyb.TemplateParsing;

import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author qb
 * @version 1.0
 * @Description 模板解析 {{name}} ==》 name(赋值后)
 * @date 2020/8/24 15:51
 */
public class TemplateParsing {

    /**
     * 模板解析
     * @param content
     * @param map
     * @return
     */
    public static String renderString(String content, Map<String,String> map){
        Set<Map.Entry<String,String>> sets = map.entrySet();
        try{
            for(Map.Entry<String,String> entry : sets){
               //定义正则
                String regex = "\\{\\{" + entry.getKey() + "\\}\\}";
                //创建匹配模式
                Pattern pattern = Pattern.compile(regex);
                //将要匹配的内容加入进行匹配的
                Matcher matcher = pattern.matcher(content);
                //将匹配的结果替换为map的value值
                content = matcher.replaceAll(entry.getValue() == null ? "null" : entry.getValue());
            }
        }catch (ClassCastException e){
            new ClassCastException("格式错误,模板解析时map都应为string类型");
            return "格式错误,模板解析时map中的value都应为string类型";
        }
        return content;
    }


}

使用方法

    @Test
    public void test(){
    //初始化实体
        zybTj zybTj = new zybTj();
        //给字段赋值
        zybTj.setQyName("测试");
         //将实体类序列化成 map (HashMap允许加入null值)
        //SerializerFeature.WriteMapNullValue :序列化策略-》允许写入null值
        HashMap<String,String> HashMap = JSON.parseObject(JSON.toJSONString(zybTj,SerializerFeature.WriteMapNullValue),HashMap.class);
        //自定义模板   因为正则用的{{**}}进行匹配,所以模板就写成例如:{{areaName}}
        String nameStr = "您所管理的区县中区县为{{areaName}},企业名为:{{qyName}}的企业,下次上传{{xmmc}}时间为{{tjDate}},请尽快处理!";
        System.err.println("序列化成map的值:    "+HashMap);
        //进行解析  注意:解析的时候尽保证 map中的value为string行,不然解析会报错
        String result =  TemplateParsing.renderString(nameStr,HashMap);
        System.err.println("模板解析后的值:    "+result);
    }

运行截图

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值