使用替换情感图像的更快方式?

时间:2016-12-27 20:00:13

标签: javascript jquery

现在我用于聊天js客户端:

chat = chat.replace(/\+best/gi, "<img src='./img/emotes/+best.png' class='chat'>");
chat = chat.replace(/\+cry/gi, "<img src='./img/emotes/+cry.png' class='chat'>");
chat = chat.replace(/\+hello/gi, "<img src='./img/emotes/+hello.png' class='chat'>");
chat = chat.replace(/\+pain/gi, "<img src='./img/emotes/+pain.png' class='chat'>");
chat = chat.replace(/\+smile/gi, "<img src='./img/emotes/+smile.png' class='chat'>");

就像其中的33个一样,问题显然可能是一个空间,或直接在它背后或在它前面的一个词。

我觉得它可以更快地完成,任何人都有任何建议吗?

3 个答案:

答案 0 :(得分:1)

您没有进行复杂的模式匹配。你应该能够在这里简单地替换字符串字符。

chat.replace("+best", "<img src='./img/emotes/+best.png' class='chat'>");

答案 1 :(得分:0)

解决方案:

这将通过空格分隔的图像名称字符串,并相应地替换它们(即使是空格),如果它是单词的一部分则忽略它

FuncAnimation

答案 2 :(得分:0)

这是一种ES6方法,通过将函数传递给.replace()来动态替换搜索文本,从而在一行中进行替换。

const emotes = ['best', 'cry', 'hello', 'pain', 'smile'];
const search = new RegExp(emotes.map( (emote) => '\\+'+emote ).join('|'),'gi');

chat = chat.replace(search,
  (match) => `<img src='./img/emotes/${match}.png' class='chat'>`);

如果有用,请高兴解释上述任何内容。