最近在做项目中遇到了一个问题,一段文本中需要标记一个数组中的关键字,直接用遍历关键字数组然后replace文本的方式,可能会导致数组最后一个关键字无法替换,如下图


let a = 'slist,maplist,pli'
let positive = ['list', 'maplist', 'pli']
positive.map((item) => {let showKey = "<span style='background-color: #FF8000;'>" + item + '</span>'a = a.replace(new RegExp(item, 'g'), showKey)console.log('a', a)
//s<span style='background-color: #FF8000;'>list</span>,map<span style='background-color: #FF8000;'>list</span>,<span style='background-color: #FF8000;'>pli</span>
})    

可以看到上图中的maplist关键字没有被替换,这是因为在positive遍历时第一次取到positive中第一个值list时,已经将文本中所有的list进行替换,导致后面去寻找第二个值‘,maplist时,在文本中找不到。

用以下方式可以规避此问题,将positive数组进行重新排序,先在文本中找到长的值,在文本中进行替换


let a = 'slist,maplist,pli'
let positive = ['list', 'maplist', 'pli']
// 将positive重新排序,字段长度长的排在前面
positive = positive.sort((a, b) => {return b.length - a.length
})
console.log(positive)
positive.map((item) => {let showKey = "<span style='background-color: #FF8000;'>" + item + '</span>'a = a.replace(new RegExp(item, 'g'), showKey)console.log('a', a)
// s<span style='background-color: #FF8000;'>list</span>,<span style='background-color: #FF8000;'>map<span style='background-color: #FF8000;'>list</span></span>,<span style='background-color: #FF8000;'>pli</span>
})

英文字母或者中文字母文本替换相关推荐

  1. utf-8的英文字母和中文汉字是一个字符占几个字节

    转自https://blog.csdn.net/kindsuper_liu/article/details/80202150 英文字母和中文汉字在不同字符集编码下的字节数 英文字母: 字节数 : 1; ...

  2. 英文字母和中文汉字在不同字符集编码下的字节数

    英文字母和中文汉字在不同字符集编码下的字节数 英文字母: 字节数 : 1;编码:GB2312 字节数 : 1;编码:GBK 字节数 : 1;编码:GB18030 字节数 : 1;编码:ISO-8859 ...

  3. EndNote参考文献英文论文的中文作者拼音姓名显示名的第二个字的首写字母

      本文介绍如何利用EndNote,对论文参考文献中英文文献的汉语拼音姓名(即作者包含中国人的英文文章)的名的第二个字的首写字母加以补充显示.例如,假如有如下一篇文章:   可知其第一作者的姓为Kon ...

  4. 英文字母和中文汉字在不同字符集编码下的字节数(详细解释)

    英文字母和中文汉字在不同字符集编码下的字节数 英文字母: 字节数 : 1;编码:GB2312 字节数 : 1;编码:GBK 字节数 : 1;编码:GB18030 字节数 : 1;编码:ISO-8859 ...

  5. elementui 表格英文加数字排序_解决vue elementUI中table里数字、字母、中文混合排序问题...

    1.使用场景 使用elementUI中的table时,给包含数字字母中文的名称等字段排序 例如:数字(0->9)->大写字母(A->Z)->小写字母(a->z)-> ...

  6. php正则匹配中文和英文字母,PHP正则匹配中文字母数字正则的表达式

    PHP正则匹配中文字母数字正则的表达式 PHP语言是一门实用性很强的语言,下面小编为大家带来了关于PHP正则匹配中文字母数字正则的'表达式,欢迎大家阅读! PHP正则匹配中文字母数字正则的表达式 代码 ...

  7. Windows下命令行及Java+Tesseract-OCR对图像进行(字母+数字+中文)识别,亲测可行

    Windows下Java+Tesseract-OCR对图像进行字符识别,亲测可行 1. 下载tesseract-ocr.中文语言包并安装 2. 命令行对图片进行识别及效果图 3. Java调用Tess ...

  8. python一个中文占几个字节_python中英文字母和中文汉字所占的字节

    原博文 2020-04-13 21:27 − print(type('李杰'.encode('utf-8')))# print(type('李杰'.encode('gbk')))# print(len ...

  9. 关于手机联系人的中文字母排序问题

    现在不管是手机自带的通讯录还是一些app的通讯录都有联系人,里面的联系人大多数都是一些a-z的名称来进行排序的.还有开发者没有研究过类似的问题不知道如何来解决这个问题.那么下面我来说下 .通过查找系统 ...

最新文章

  1. flutter中的生命周期函数
  2. python filter内置函数_python 内置函数filter
  3. 聚类分析简单介绍(附R对应函数介绍)
  4. mysql 未能启用约束_未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。...
  5. python 设置默认字典
  6. Django Sqlite3 数据库向MySQL迁移
  7. Xcode7查看iphone真机的应用程序文件
  8. 【并查集】黑魔法师之门(codevs 1995/joyoi-codevs 1995)
  9. 步骤一:入门linux基础/01Linux简介和安装/002Linux发行版的介绍
  10. OpenShift 4 之AMQ Streams(4) - 用Prometheus监控Kafka
  11. OSPFv2的综合实验试题分析第2例(CCNP阶段)
  12. Linux_防火墙入门01:以太网的诞生与演变历程
  13. 别找了诸位 【十二款超级好用的谷歌插件都在这】(确定不来看看?)
  14. python猜拳游戏编程代码_Python实现猜拳小游戏
  15. 中国第一上网人-钱天白先生
  16. VMware下载,安装及创建虚拟机
  17. hadoop tyarn冲突_hadoop集群启动yarn时出现的问题和解决方法
  18. Git 到底是个什么东西?
  19. docker之容器常用命令及基本操作
  20. element UI table合并行合并列(整理)

热门文章

  1. 从 KPI 到 OKR,高阶产品人如何推动业务高速增长
  2. Git上修改分支名称
  3. VIPKID数千万战略投资新学说,深度参与国际教育行业
  4. RNA保护液、FastAb佐剂、核酸提取试剂盒丨为您的实验锦上添花
  5. 美团 java_GitHub - meituan/mssapi_java: 美团云对象存储 Java SDK
  6. 暑假教师计算机培训总结,关于暑期教师信息技术培训总结范文
  7. Unity让物体跟随鼠标移动
  8. 安装MySQL报错:Failing package is: mysql-community-client-5.7.40-1.el7.x86_64 GPG Keys are configured as
  9. 裴波那契数列的递归和动态规划算法
  10. Java基础之《JDK文档》