StringTemplate原理是替换掉占位符 <> 里的参数
这里我是以数据库的模板参数为准,参数替换 只需要改变数据库数据,不用改动代码。
maven依赖:
<!--StringTemplate模板引擎--> <dependency> <groupId>org.antlr</groupId> <artifactId>ST4</artifactId> <version>4.0.8</version> <scope>compile</scope> </dependency>
import org.apache.commons.lang3.StringUtils; import org.stringtemplate.v4.ST; import java.util.HashMap; import java.util.Map; /** * @author :zhangqiang * @create :2018-08-23 10:41 **/ public class MessageTemplateUtil { /** * 匹配参数,以数据库为准 * @param replaceParamName * @param param * @return */ public static Map messageTemplateMap(String replaceParamName, Map<String, Object> param) { String[] paramName = replaceParamName.split(","); Map<String, Object> templateMap = new HashMap<>(); for (String key : paramName) { templateMap.put(key,param.get(key)); } return templateMap; } /** * 消息 * @param StringFormat * @param replaceParamName * @param param * @return */ public static String message(String StringFormat, String replaceParamName, Map<String, Object> param) { if (StringUtils.isBlank(StringFormat)){ return ""; } ST st=new ST(StringFormat); if (StringUtils.isNotBlank(replaceParamName)){ if (null !=param && !param.isEmpty()){ String[] paramName = replaceParamName.split(","); for (String key : paramName) { st.add(key,param.get(key)); } } } return st.render(); } //简单的测试一下 public static void main(String[] args) { Map<String,Object> param=new HashMap<>(); param.put("name","可懿"); param.put("msg","要开心哦~~~"); param.put("year",2018); param.put("kkk",6666); System.out.println(message("我是<name>,<year>年<msg>!!!","name,msg,year",param)); System.out.println(message("哈哈哈!!!","",null)); } //输出:我是可懿,2018年要开心哦~~~!!! }