首页 > 其他分享 >简单动态变量文本模板

简单动态变量文本模板

时间:2022-08-27 22:48:48浏览次数:44  
标签:Map return 变量 param templateStr 文本 模板 String

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;
    }

}

标签:Map,return,变量,param,templateStr,文本,模板,String
From: https://www.cnblogs.com/kancy/p/simpleTextTemplate.html

相关文章

  • Django入门到放弃之模板及标签
    1.django模板使用的两种方式#方式一 returnrender(request,'time.html',context={'current_date':str(now),'title':'lqzNB'})#方式二(页面静态化,提高网站并发量)......
  • Flask 学习-21. 项目配置通过.env环境变量启动开发/生产环境
    前言一般一个项目会配置多套环境:开发/测试/生产环境,每套环境的配置不一样,比如不同的运行环境配置的数据库不一样。config配置在前面的配置管理中https://www.cnblogs.co......
  • Spring @Autowired 注解静态变量
    最近应该项目的需要,需要使用一个工具类来访问数据库。但是这个工具类又被定义成静态访问了。我们也需要设置一个静态变量来访问数据库。@Autowiredprivatesta......
  • 变量
    1.什么是变量变量是指可以变化的量,量指的是事物的状态,比如年龄,金钱、身高等等2.为什么要有变量为了能够让计算机像人一样记忆某一种事物的状态,并且这个状态是可以发生变......
  • 【MySQL】MySQL8持久化系统变量
    set命令可以用于将某些全局系统变量持久化到数据目录中的mysqld-auto.cnf文件中,以影响后续启动的服务器操作。resetpersist从mysqld-auto.cnf中删除持久设置。在运行时持......
  • 可变参数模板
    获取参数个数template<class...T>voidf(T...args){cout<<sizeof...(args)<<endl;//打印变参的个数}f();//0f(1,2);//2f(1,2.5,"......
  • smarty模板引擎中变量及变量修饰器用法实例
    smarty模板引擎中变量及变量修饰器用法实例_php实例_脚本之家 https://www.jb51.net/article/60243.htm本文实例讲述了smarty变量及变量修饰器的应用。分享给大家供大家......
  • EYOUCMS模板如何打包备份(搬家教程)
    1,本地备份数据库2,删除install_********目录下的install.lock文件3,再改名install_1540256968为install4,删除data/runtime所有文件夹5,打包根目录下所有文件,上传空间解压即......
  • IDEA的模板及配置
    什么是模板什么是模板?简单的理解就是配置一些字母缩写。使用简写的方式,就能出现预定义的固定代码。这样做可以大大提高开发效率。最常见的就是输入 sout就会出现 Syst......
  • Shopify Spark主题模板配置修改
    对于那些正在启动业务的shopify卖家来说,Spark主题是很好的选择,它跨越了你的愿景和市场之间的差距,将美感和必要性结合在一起,这样你就可以用最小的触角将事情进行下去。通过......