简单动态变量文本模板

TemplateUtils工具类

import lombok.experimental.UtilityClass; import org.springframework.cglib.beans.BeanMap; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * TemplateUtils * * @author kancy * @date 2022/8/27 19:43 */ @UtilityClass public class TemplateUtils { /** * 变量占位符匹配正则 */ private static final Pattern pattern = Pattern.compile("(\\$\\{(.*?)})"); /** * 解析 * * @param templateStr 模板str * @param bean 豆 * @return {@link String} */ public String parse(String templateStr, Object bean){ if (!templateStr.contains("$")){ return templateStr; } return parse(templateStr, BeanMap.create(bean)); } /** * 解析 * * @param templateStr 模板str * @param params 参数 * @return {@link String} */ public String parse(String templateStr, Map<String, Object> params){ if (!templateStr.contains("$")){ return templateStr; } String template = templateStr; Map<String, String> variableMap = getVariableMap(template); Set<Map.Entry<String, String>> entries = variableMap.entrySet(); for (Map.Entry<String, String> entry : entries) { String key = entry.getKey(); String value = entry.getValue(); if (params.containsKey(key)){ template = template.replace(value, String.valueOf(params.get(key))); } } return template; } /** * 解析变量名 * * @param templateStr 模板str * @return {@link List}<{@link String}> */ public List<String> parseVariableNames(String templateStr){ return new ArrayList<>(getVariableMap(templateStr).keySet()); } /** * 获取变量映射 * * @param templateStr 模板str * @return {@link Map}<{@link String}, {@link String}> */ private Map<String, String> getVariableMap(String templateStr) { Matcher matcher = pattern.matcher(templateStr); Map<String, String> variableMap = new HashMap<>(); while (matcher.find()) { variableMap.put(matcher.group(2).trim(), matcher.group(1)); } return variableMap; } }

__EOF__

本文作者゛鱼记忆不止七秒つ
本文链接https://www.cnblogs.com/kancy/p/simpleTextTemplate.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   kancy  阅读(53)  评论(0编辑  收藏  举报
相关博文:
点击右上角即可分享
微信分享提示