zoukankan      html  css  js  c++  java
  • Java组合Html前端代码

    业务需求

    数据库中以Text储存Html模板代码,对于动态内容部分以固定格式表示。每次通过后端代码组装传给前端获得固定模板的动态内容界面。

    Code

    package cn.zlb.fe.server;
    
    import org.junit.Test;
    
    import java.util.HashMap;
    import java.util.Map;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    import static java.util.regex.Pattern.compile;
    
    /**
     * @Author Yuri
     * @Date 2021/4/15 11:24
     * @Version 1.0
     * @Description:
     */
    public class Main {
        
        public static void main(String[] args) {
            String test = "内容:${content}
    标题:${title}";
            Map<String, Object> map = new HashMap<>();
            map.put("content", "上");
            map.put("title", "下");
            contentFormat(test, map);
        }
    
        public static String contentFormat(String content, Map<String, Object> kvs) {
            Pattern p = compile("\$\{(.*?)}"); //Pattern类用于创建一个正则表达式
            Matcher m = p.matcher(content); //Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持
            StringBuffer sr = new StringBuffer(); //StringBuffer可变字符序列
            while (m.find()) { //逐个找到满足匹配的串${xxx}
                String group = m.group(); //组是用括号划分的正则表达式,可以根据组的编号来引用这个组。组号为0表示整个表达式,组号为1表示被第一对括号括起的组,依次类推,例如A(B(C))D,组0是ABCD,组1是BC,组2是C。
                String key = group.substring(2, group.length() - 1);//从${xxx}获取xxx
                String value = String.valueOf(kvs.get(key));
                if (null != value) {
                    m.appendReplacement(sr, value);//将匹配的字符串保存在另一个StringBuffer中并且是渐进式匹配
                }
            }
            m.appendTail(sr);//appendTail是将未匹配到的余下的字符串添加到StringBuffer
            return sr.toString();
        }
    }
    

    参考

    Pattern和Matcher用法:https://blog.csdn.net/weixin_42868638/article/details/82721489

  • 相关阅读:
    二十四 多重继承
    二十三 使用@property
    Tornado 协程
    基于协程的Python网络库gevent
    用greenlet实现Python中的并发
    在Nginx上配置多个站点
    python 使用Nginx和uWSGI来运行Python应用
    在Apache中运行Python WSGI应用
    Python打包分发工具setuptools
    Python 远程部署 Fabric
  • 原文地址:https://www.cnblogs.com/AkimotoAkira/p/14661676.html
Copyright © 2011-2022 走看看