// 此方法写在 computed里面
// 第一种
let oriStr = this.content; // 含有表情的内容
let flag = false; // 判断是否遇见无效表情字符串
let newStr = ''; // 重构后的字符串
let emojiStr = ''; // 表情字符串
let emojiSpan = ''; // 存储表情的表情span
if (oriStr.indexOf('[') > -1 && oriStr.indexOf(']') > -1) {
do { // 含有表情的内容匹配表情
emojiStr = oriStr.substring(oriStr.index('['), oriStr.indexOf(']') + 1 - oriStr.indexOf('['));
for(let i = 0; i < this.emjiList.length; i++){
if (emojiStr == this.emjiList[i].name) { // 表情匹配处理
newStr += oriStr.substring(0, oriStr.indexOf('['));
oriStr = oriStr.substring(oriStr.indexOf(']') + 1);
emojiSpan = `<span class="${this.emjiList[`this.emjiList[i].class}"></span>`;
newStr += emojiSpn;
emojiStr = '';
flag = true;
}
}
if (!falg) { // 存在[]但是不是表情list存在的表情
newStr += oriStr.substring(0, oriStr.indexOf('['));
oriStr = oriStr.substring(oriStr.indexOf(']') + 1);
newStr += emojiStr;
emojiStr = '';
}
// 匹配完毕恢复所有数据初始化
flag = false;
} while(oriStr.indexOf('[') > -1 && oriStr.indexOf(']') > -1)
newStr += oriStr; // 不是表情结尾处理
}
return newStr;
// 第二种
使用.replace()方法
let oriStr = this.content; // 含有表情的内容
let emojiSpan = `<span class="${class}"></span>`;
let reg = "/" + oriStr + "/g";
return content.replace(eval(reg), emojiSpan);