oldDom= "哈哈哈[开心]nr是的呢" //注意 必须新创建一个变量进行分割 //先把字符串中的n换行 替换成<BR> const newDom = oldDom.replace(/n/g,"<BR>"); //下面就开始匹配字符串中 <BR>换行 和 [.*]表情 let newDom2 = newDom.split(/(<BR>+)|[([^]]+)]/g).map((s)=>this.getEmojiDom(s)) /** * 替换字符串中的换行和表情 */ getEmojiDom = (textName)=>{ // 如果字符串是换行符的话直接返回br标签 if(textName === '<BR>') return <br /> let s = '';//初始化一个变量 //emojiArr 是我的表情数组 emojiArr.map((item,key)=>{ //判断当前的字符串是否 和 我数组中的表情key一致 如果一致的话就 创建 img标签 并且把表情图片地址 赋值给img if(item.textName === `[${textName}]`){ s = <img key={`${item.textName}-${key}-${Number.parseInt(new Date().getTime())}`} style={{width:'20px',height:'20px'}} src={`https://img.fendoug.com/Im/Expression/emoji/${item.urlName}@2x.${item.extension}`} /> } }) //判断如果匹配到了 表情则 返回表情的dom 否则 直接返回字符串 return s==='' ? textName : s }
发表评论 取消回复