现在我用于聊天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个一样,问题显然可能是一个空间,或直接在它背后或在它前面的一个词。
我觉得它可以更快地完成,任何人都有任何建议吗?
答案 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'>`);
如果有用,请高兴解释上述任何内容。