首页 > 其他分享 >模板信息渲染和正则表达式的运用

模板信息渲染和正则表达式的运用

时间:2024-10-18 17:23:13浏览次数:6  
标签:aaa 渲染 正则表达式 describe bbb match const 模板

业务

后台配置模板消息

  • 配置变量名及相关数据,用来进行查询
  • 配置模板信息,嵌入变量名

前台渲染

  • 通过接口获取模板信息
  • 将模板消息中的变量替换成对应的数据
模板信息: '今天到场一共${aaa}人,其中男${bbb}人,女${ccc}人'
相关信息:
{
    describe:'今天到场一共${aaa}人,其中男${bbb}人,女${ccc}人',
    items:[
        {
            variable:'aaa',
            value: 100
        },
        {
            variable:'bbb',
            value: 50
        },
        {
            variable:'ccc',
            value: 50
        }
    ]
}

其中,模板会存在各种格式

模板信息: '今天到场一共${aaa}人,其中男${bbb}人,女${ccc}人 /n  test${aaa} /n ${aaa}${bbb} /n ${aaa}123${bbb}'

 

实现

利用正则表达式处理变量替换

  • ^([\s\S]*?)\$\{(\w+)\}匹配任意字符串开头接上${任意字符串}  
  • ^\$\{(\w+)\}匹配${任意字符串}

利用css样式处理换行

  • style={{
        wordBreak: 'break-all',
        whiteSpace: 'pre-wrap',
    }}
//templateData为接口数据
const handleTemplateData = useMemo<ReactNode[]>(() => {
    if (!templateData || !templateData.describe) return [];
    const result: ReactNode[] = [];
    let _describe: string = templateData.describe;
    const regexp: RegExp = /^([\s\S]*?)\$\{(\w+)\}|^\$\{(\w+)\}/;
    let match: RegExpMatchArray | null = regexp.exec(_describe); //匹配***${***}字符串
    while (match) {
      const str = match[0]; //获取匹配到的***${***}字符串
      const string = match[1]; //获取非${****}字符串
      const value = match[2]; //获取匹配${****}中的变量名
      const getDateFromApiData = (***) => {****}
      result.push(
        <Fragment>
          {string}{getDateFromApiData(***)}
        </Fragment>
      );
      _describe = _describe.replace(str, ''); //替换已经匹配的字符串
      match = regexp.exec(_describe); //重新匹配查询
    }
    if (_describe.length > 0) result.push(<Fragment>{_describe}</Fragment>); //arr放入剩余字符串
    return result;
  }, [templateData]);

 

标签:aaa,渲染,正则表达式,describe,bbb,match,const,模板
From: https://www.cnblogs.com/karle/p/18471610

相关文章

  • 逆向 | shellcode注入模板
    逆向|shellcode注入模板继续写书里的示例代码。#include<stdio.h>#include<windows.h>typedefint(WINAPI*PMESSAGEBOXA)(HWNDhWnd,LPCSTRlpText,LPCSTRlpCaption,UINTuType);typedefFARPROC(WINAPI*PGETPROCADDRESS)(HMODULEhModule,LPCSTRlpProcName);ty......
  • 专题(十九)Linux 下的正则表达式
    一、作用与介绍正则表达式通常用于判断语句中,用来检查某一字符串是否满足某一格式正则表达式是由普通字符与元字符组成普通字符:包括大小写字母、数字、标点符号及一些其它符号元字符:是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)......
  • 微信小程序 触底加载更新 虚拟列表渲染
    <wxsmodule='filter'>varincludesList=function(list,currentIndex){if(list){returnlist.indexOf(currentIndex)>-1}}module.exports.includesList=includesList;</wxs><scroll-viewstyle='......
  • javascript渲染OFD的库
    目前使用javascript开发的OFD的渲染库主要有两个:ofd.js和liteofd,其中ofd.js开发比较早,liteofd是最近刚出现的js库。首先结论是ofd.js渲染效果没有liteofd好,因为ofd.js目前有一些效果没有支持,比如对字体没有比较好的解析和支持。liteofd相对ofd.js效果更好,并且提供的接口方法更多......
  • 秘制小模板
    最小生成树PrimCode#include<iostream>#include<queue>usingnamespacestd;constintkMaxN=1e5+1;intn,m;vector<pair<int,int>>g[kMaxN];structNode{intu,w;Node(inta,intb){u=a,w=b;}friendbo......
  • 【模板】模意义下的乘法逆元 2
    原题链接\(通过小学就知道的小费马定理我们可以得知\)\(inv(a)=a^(mod-2)(modp)\)\(我们将其前后通分然后把分子的和加起来最后通过所有数的乘积的逆元进行计算即可\)\(唯一恶心的点就是卡取消同步流\)\(code:\)点击查看代码#include<bits/stdc++.h>#defineintlong......
  • 正则表达式
    正则表达式正则表达式是一种匹配输入文本的模式。.Net框架提供了允许这种匹配的正则表达式引擎。模式由一个或多个字符、运算符和结构组成。作用:查询,从字符串中获取我们想要的部分匹配,判定字符串是否符合规则如判断用户输入的密码是否正确,邮箱格式是否合法等。字符转义......
  • Zabbix模板数据存储在哪里?
    Zabbix的模板数据存储在数据库的哪一个表里面?以MySQL数据库为例,在数据库zabbix中,其实模板数据存储在hosts这个表里面,而不是存在hosts_templates表里面。很多人一看到templates关键字,容易先入为主的以为这个表会存储模板的相关数据。但是实际上,hosts_templates表用于存储主机和模板......
  • 配置式表单渲染器的实现
    配置式表单渲染器的实现 我们是袋鼠云数栈UED团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。。本文作者:奇铭(掘金)需求背景前段时间,离线计算产品接到改造数据同步表单的需求。一方面,数据同步模块的代码可读......
  • Stats渲染数据统计窗口
    Statistics窗口,全称叫做RenderingStatisticsWindow,即渲染统计窗口(或渲染数据统计窗口),窗口中罗列出关于渲染、声音、网络状况等多种统计信息,下面详细的解释一下这些项的意义。FPS(TimeperframeandFPS)framesperseconds表示引擎处理和渲染一个游戏帧所花费的时间,该数字主......