最终效果展示
T1
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5d72c7e52e73dbf0f8f71666e563e139.png)
T2
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/169eef5eeba3c60de76e2efa08a9ab45.png)
T3
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8d9732e5bd13a375f6f0611cf4e597fa.png)
T4
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5de8d2d8c69a86c526e6020412323e80.png)
需求
- 把评论
你好帅啊啊啊[开心][开心]
,[开心] 替换为图片
思路
- 正则match提取
[开心]
到一个数组 - 数组去重
- 创建img标签
- img标签转文本. 。例:
(el.outerHTML)
,将el元素转文本 - 字符串replaceAll方法替换表情文本为标签转换的文本
- 使用innerHTML渲染到页面
码
<div id='em'></div>
<script>
const emjioList = [
{
name: '[开心]',
src: 'public/emjio/1678782525035.gif'
},
{
name: '[对不起]',
src: 'public/emjio/1678782526027.gif'
},
]
const noReArr = (arr) => [...new Set(arr)]
let 评论 = '你好帅啊啊啊[开心][开心]'
const reg = new RegExp("\\[.*?]", "gi");
const emjioStrArr = 评论.match(reg);
const noRepEmjioArr = noReArr(emjioStrArr)
noRepEmjioArr.forEach(it => {
const createImg = document.createElement("img");
const { src } = emjioList.find(it2 => it2.name === it);
createImg.src = src
const imgElToString = createImg.outerHTML;
评论 = 评论.replaceAll(it, imgElToString);
});
document.getElementById('em').innerHTML = 评论
</script>
效果图
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fec35cac7108c9c4a4ee3ac1a298981e.png)