方法一:
//测试模板
@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;
//测试模板
@Test
public void getTest1(){
//先获取模板
String temp ="你预约了{}医院,请及时取号,在{}-{}前到!";
//调用方法
String templateInfo = StrUtil.format(temp,"青岛","2:00","3:00");
System.out.println("消息模板内容----:"+templateInfo);
}
打印的匹配结果:

方法三:(推荐)
用的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);
}
打印结果:

本文介绍了使用Hutool库简化Java中模板字符串替换的方法,通过实例展示了如何在固定值和动态对象映射场景下操作模板。方法二和方法三分别展示了使用StrUtil.format()和JSON对象映射的高效方式。
445

被折叠的 条评论
为什么被折叠?



