• Java之~反射,String类型模板匹配类属性方法


    方法一:
    //测试模板
    @Test
    public void getTest(){
    
        //先获取模板
        String temp ="你预约了${name}医院,请及时取号,在${startTime}-${endTime}前到!";
        TestDTO testDTO = new TestDTO();
        testDTO.setName("青岛");
        testDTO.setStartTime("11:30");
        testDTO.setEndTime("14:50");
        //调用方法
        String templateInfo = this.getTemplateInfo(temp, testDTO);
        System.out.println("消息模板内容----:"+templateInfo);
    }
    
    
    /**
     * 获取模板信息方法
     * @param templateInfo 模板
     * @param classObject 要拼接的类
     * @return
     */
    public String getTemplateInfo(String templateInfo,Object classObject){
    
        Field[] fields = classObject.getClass().getDeclaredFields();
        try {
            for (Field field : fields) {
                field.setAccessible(true);
                String fieldName = field.getName();
                String fieldValue = null == field.get(classObject) ? "" : field.get(classObject) + "" ;
                if (templateInfo.contains(fieldName)){
                    String nameStr = "${" + fieldName + "}";
                    templateInfo = templateInfo.replace(nameStr, fieldValue);
                }
            }
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return templateInfo;
    }
    
    //要铺数据的类
    @Data
    class TestDTO{
        private String name;
        private String startTime;
        private String endTime;
    }
    打印的匹配结果: 
    

    方法二:(适用于固定几个值的)

    用的hutool的工具类

    import cn.hutool.core.util.StrUtil;
    1. //测试模板
    2. @Test
    3. public void getTest1(){
    4. //先获取模板
    5. String temp ="你预约了{}医院,请及时取号,在{}-{}前到!";
    6. //调用方法
    7. String templateInfo = StrUtil.format(temp,"青岛","2:00","3:00");
    8. System.out.println("消息模板内容----:"+templateInfo);
    9. }

    打印的匹配结果:

    方法三:(推荐)

    用的hutool的工具类

    //测试模板
    @Test
    public void getTest2(){
    
        //先获取模板
        String temp ="你预约了{name}医院,请及时取号,在{startTime}-{endTime}前到!";
    
        TestDTO testDTO = new TestDTO();
        testDTO.setName("青岛医院");
        testDTO.setStartTime("11:30");
        testDTO.setEndTime("14:50");
        // bean转map
        Map map = JSON.parseObject(JSON.toJSONString(testDTO), Map.class);
        //调用方法
        String templateInfo = StrUtil.format(temp,map);
        System.out.println("消息模板内容----:"+templateInfo);
    }

    打印结果:

     

  • 相关阅读:
    第七章:最新版零基础学习 PYTHON 教程—Python 列表(第一节 -Python 列表及示例)
    JAVA常用工具类
    linux下nvidia驱动安装-ubuntu22.04安装2060-notebook驱动
    前端工程化:使用 shelljs 生成 yapi 接口文件
    【SCSS篇】Vite+Vue3项目全局引入scss文件
    Spring Security OAuth实现Gitee快捷登录
    带你搞懂MySQL隔离级别,两个事务同时操作同一行数据会怎样?
    CISP-PTE实操练习题讲解一(新版)
    大数据周会-本周学习内容总结017
    神经网络模型训练简记(三)
  • 原文地址:https://blog.csdn.net/haopingping_88/article/details/126389751