package com.easyooo.framework.common.util;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* 字符串模板工具类,
*
* 模板支持如:"hello, {user}",
* 参数须以Key-Value形式的Map参数
* 模板中可支持"."符号
*
* @author Killer
*/
public final class TemplateUtil {
private static final Logger logger = LoggerFactory.getLogger(TemplateUtil.class);
private static final String TEMPLATE_REGEX = "(\\{\\s*[\\w\\.]+\\s*\\})";
private static final Pattern PATTERN;
static {
PATTERN = Pattern.compile(TEMPLATE_REGEX);
}
public static String format(String template, Object...kvArgs){
return format(template, MapUtil.gmap(kvArgs));
}
public static String format(String template, Map<String, Object> args){
Matcher m = PATTERN.matcher(template);
StringBuffer buffer = new StringBuffer();
while(m.find()){
String group = m.group();
String argKey = group.substring(1, group.length() - 1).trim();
Object v = args.get(argKey);
if(v != null){
m.appendReplacement(buffer, v.toString());
}
if(logger.isDebugEnabled()){
logger.debug(argKey + ":" + v);
}
}
m.appendTail( buffer);
return buffer.toString();
}
}