项目中常常需要解析字符串模板,比如user:{userId}:{userType}用于redis的key等,比较常见的做法就是使用String.format("user:%s:%s", 1, 1)方法,但个人感觉那样的模板不够明了,而使用模板解析器可更好地有助于解析此类字符串。可使用map用于解析,也可使用对象进行解析,也可使用类似String.format可变参数进行解析,多样化解析对象值。有点类似于js的模板字符串${}。
也可自定义前缀后缀进行解析。如PlaceholderResolver.getResolver("{", "}")该对象可解析{}该类型的占位符.
性能方面:
PlaceholderResolve解析结果
String.format解析结果
解析100w次,占位符解析比String.format平均都会快个0.4~0.5s,so 性能应该问题不大。最主要的是不需要调用太多的对象方法,自动解析,方便快捷。
源代码如下:
/**
* 占位符解析器
*
* @author meilin.huang
* @version 1.0
* @date 2018-11-13 1:42 PM
*/
public class PlaceholderResolver {
/**
* 默认前缀占位符
*/
public static final String DEFAULT_PLACEHOLDER_PREFIX = "${";
/**
* 默认后缀占位符
*/
public static final String DEFAULT_PLACEHOLDER_SUFFIX = "}";
/**
* 默认单例解析器<