StringTemplate原理是替换掉占位符<>里的参数
这里我是以数据库的模板参数为准,参数替换 只需要改变数据库数据,不用改动代码。
maven依赖:
org.antlr
ST4
4.0.8
compile
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 param) {
String[] paramName = replaceParamName.split(",");
Map 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 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 param=new HashMap<>();
param.put("name","可懿");
param.put("msg","要开心哦~~~");
param.put("year",2018);
param.put("kkk",6666);
System.out.println(message("我是,年!!!","name,msg,year",param));
System.out.println(message("哈哈哈!!!","",null));
}
//输出:我是可懿,2018年要开心哦~~~!!!
}