【JS】替换文本为emjio表情

news2024/9/25 3:27:16

最终效果展示

T1

在这里插入图片描述

T2

在这里插入图片描述

T3

在这里插入图片描述

T4

在这里插入图片描述

需求

  • 把评论你好帅啊啊啊[开心][开心][开心] 替换为图片

思路

  1. 正则match提取[开心]到一个数组
  2. 数组去重
  3. 创建img标签
  4. img标签转文本. 。例:(el.outerHTML),将el元素转文本
  5. 字符串replaceAll方法替换表情文本为标签转换的文本
  6. 使用innerHTML渲染到页面

<div id='em'></div>
<script>
// emjio列表
const emjioList = [
    {
        name: '[开心]',
        src: 'public/emjio/1678782525035.gif'
    },
    {
        name: '[对不起]',
        src: 'public/emjio/1678782526027.gif'
    },
    // ..................................
]

/**  数组去重
 * @param {Array} arr 去重的数组
 * @returns 返回去重的数组
 */
const noReArr = (arr) => [...new Set(arr)]

let 评论 = '你好帅啊啊啊[开心][开心]'
//1.正则提取表情 
const reg = new RegExp("\\[.*?]", "gi");
//2. 开始提取
const emjioStrArr = 评论.match(reg);
// 3. 数组去重
const noRepEmjioArr = noReArr(emjioStrArr) 

//6. 遍历表情
noRepEmjioArr.forEach(it => {
// 4. 创建img标签
const createImg = document.createElement("img");   

// 5. 找到对应表情图片地址
const { src } = emjioList.find(it2 => it2.name === it);
// 6. 设置表情图片地址
createImg.src = src 

// 7. img标签转字符串
const imgElToString = createImg.outerHTML;

// 8.替换表情为img标签字符串
评论 = 评论.replaceAll(it, imgElToString);
});

// 9.将替换的字符渲染到id为em的元素里
document.getElementById('em').innerHTML = 评论
</script>

效果图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1533979.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Javaee 进程调度的基本过程

进程 一个程序,运行起来/跑起来,在操作系统中,就会出现一个对应的进程, 进程其实就是一个跑起来的应用程序 让程序跑起来就是可以双击快捷方式或者在开始菜单中 单击该选项 . 在我们的电脑上 可以打开任务管理器 可以看到很多进程: 我们可以把运行起来的可执行文件 称为进程 …

[C语言]——操作符详解

目录 一.操作符的分类 二.二进制和进制转换 1.二进制转十进制 2.二进制转八进制和十六进制 2.1二进制转八进制 2.2二进制转十六进制 三.原码、反码、补码 四.移位操作符 1.左移操作符 2.右移操作符 五.位操作符&#xff1a;&、|、^、~ 练习1&#xff1a;编写代码实…

两个现货白银理财产品投资技术分析方法

现货白银是投资市场中比较受欢迎的理财产品。要投资现货白银&#xff0c;我们需要具备一定的金融投资经验。下面我们就来讨论一下&#xff0c;在现货白银这个理财产品的投资过程中&#xff0c;常常用到的一些技术分析方法。 宏观的趋势分析法。在现货白银理财产品投资中&#x…

nodejs pkg打包跨平台执行文件,带.node插件(sharp、sqlite3)

在nodejs引入的第三方库中,大部分插件都是nodejs原生开发,使用pkg可以快速打包,生成windows、linux(ubuntu、centOS等)、麒麟系统下面执行文件。遇到了第三方插件gdal、sharp、sqlite3,在webstorm中打包生成执行文件,跨平台部署的时候会出现找不到###.node文件,需要获取部…

Harbor介绍

1.什么是Harbor Harbor是一个开源的企业级Docker Registry管理项目&#xff0c;由VMware公司开源。 Harbor提供了比Docker官方公共镜像仓库更为丰富和安全的功能&#xff0c;尤其适合企业环境使用。以下是Harbor的一些关键特性&#xff1a; 权限管理&#xff08;RBAC&#x…

什么是内网穿透?如何实现内网穿透?

关注微信公众号&#xff1a;怒码少年&#xff0c;回复关键词【电子书】可以免费获取计算机相关电子书 大家好&#xff0c;我是小码。 如果你能上线或者部署你的项目以便于面试官查看&#xff0c;无疑是大大增加了真实性。使用上一篇讲到的如何使用腾讯云宝塔Linux面板部署项目…

QT QGraphicsView 在鼠标点击处进行放大缩小

一、前段时间在用QGraphicsView对图元进行放大缩小时&#xff0c;发现图形总是越来越跑偏&#xff0c;无法像地图中那样&#xff0c;点击哪里就能放大哪个地方。 如下所示&#xff1a;此时放大缩小的焦点并不在鼠标位置 方法&#xff0c;使用QGraphicsView类的设置属性函数.在构…

蜂窝物联智慧果园案例:福建万春寨农业科技有限公司醒狮智慧芦柑园

项目背景 永春醒狮农场前身永春醒狮场是永春最早种植芦柑基地之一&#xff0c;十年前因为黄龙病全部死亡。今年由万春寨农业牵头&#xff0c;重新开荒种植芦柑。此地&#xff0c;虽然海拔高、树木葱郁&#xff0c;然后可用灌溉水源却非常缺乏&#xff0c;如何实现节水灌溉问题成…

GRE简介

定义 通用路由封装协议GRE&#xff08;Generic Routing Encapsulation&#xff09;可以对某些网络层协议&#xff08;如IPX、IPv6、AppleTalk等&#xff09;的数据报文进行封装&#xff0c;使这些被封装的数据报文能够在另一个网络层协议&#xff08;如IPv4&#xff09;中传输…

vm-workstation win10 网络的设置

设置宿主机网络&#xff08;win10&#xff09; 1&#xff0c;在 win10宿主机上为虚拟机设置192.168.6.0/24 的网段 VM-workstation 网络设置 2&#xff0c;vm-workstation 软件设置

工控机丨丨工业电脑丨工控计算机丨工业一体机丨什么是工业一体机

工业一体机俗称工控机&#xff0c;是一种专门为工业应用而设计的计算机设备&#xff0c;主要应用于工厂、车间、仓库等工业场所。此外工控机还叫做工控计算机&#xff0c;通常采用工业级主板、工业级CPU、工业级硬盘、工业级内存和工业级电源等硬件组件&#xff0c;以确保其在高…

NetSuite 固定资产Write-Off的撤回操作

之前我们有说到如果是Sale了固定资产后发现有误&#xff0c;需要撤回操作该如何处理。这篇文章来补充一下&#xff0c;如果是误Write-Off了一个固资该如何处理&#xff0c;其逻辑与Sale的撤回基本一致&#xff0c;但是少了删除Sale Invoice的步骤。 我们用一个实际的例子来进行…

ISIS默认层级实验简述

ISIS被划分为三个层级&#xff1a;Level 1、Level 2和Level 1-2。 默认情况下&#xff0c;ISIS路由器属于level 1-2,是指同时支持Level 1和Level 2的路由器。路由器既可以在同一个自治系统内部进行路由选择&#xff0c;也可以将路由信息传递到其他自治系统。 实验拓扑图&#…

鸿蒙一次开发,多端部署(一)简介

背景 随着终端设备形态日益多样化&#xff0c;分布式技术逐渐打破单一硬件边界&#xff0c;一个应用或服务&#xff0c;可以在不同的硬件设备之间随意调用、互助共享&#xff0c;让用户享受无缝的全场景体验。而作为应用开发者&#xff0c;广泛的设备类型也能为应用带来广大的…

HTML5:七天学会基础动画网页(end)

想了想还是有一点东西还没说&#xff0c;当然这块内容也比较简单&#xff0c;就是当我们有一段完整素材时&#xff0c;如下: 我在网上随便找的素材&#xff0c;当然我们平时在使用素材时要注意尊重他人的著作权&#xff0c;不管是字体图片还是别的&#xff0c;不然后面不小心侵…

20岁小姑娘 半年用消费返现模式 做了2000多万销售额!!

一个年仅十几岁的小姑娘&#xff0c;仅凭一套价值1900元的化妆品&#xff0c;在短短27天内便创下了高达2000多万元的销售额&#xff0c;这听起来似乎有些不可思议。然而&#xff0c;她确实做到了&#xff0c;那么&#xff0c;她究竟是如何做到的呢&#xff1f; 答案其实并不复杂…

使用aop做权限控制

1、pom.xml文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http:/…

快速画流程图

使用在线工具&#xff1a;PlantUML PlantUML 官网:https://plantuml.com/ 中文官网:https://plantuml.com/zh/ 使用步骤如下&#xff1a; 1、拷贝一个完成函数&#xff1a; int func_init(const char *tag) {if (tag ! NULL) {printf("set TAG :%s", tag);}print…

固定资产管理系统有哪些应用价值

固定资产管理已成为当今企业经营中不可忽视的重要环节。伴随着时代的发展&#xff0c;固定资产管理系统的出现&#xff0c;为企业提供了一种高效、精确的管理方式。那固定资产管理系统实际有什么实际意义呢&#xff1f;本文将从以下几个方面进行讨论。  固定资产管理系统可以…

Python入门操作学习记录

图行画程序设计--海龟绘图 1、爱心 import turtle turtle.showturtle() turtle.width(20) turtle.write("c的弃子") turtle.color("red") turtle.left(50) turtle.forward(250) turtle.goto(60,300) turtle.goto(0,225) turtle.left(83) turtle.forward(…