JavaScript:接受消息并将特定字符替换为代码行的函数?
我在Node.js上有一个聊天应用程序,我刚刚为它制作了笑脸。 如何将消息中的所有字符集扫描/替换为代码行?(图片) 这是正在添加到聊天窗口的消息JavaScript:接受消息并将特定字符替换为代码行的函数?,javascript,Javascript,我在Node.js上有一个聊天应用程序,我刚刚为它制作了笑脸。 如何将消息中的所有字符集扫描/替换为代码行?(图片) 这是正在添加到聊天窗口的消息 $("#chatEntries").append('<div class="messagesOLD">' + "<span class='msg_date'>"+dateFormat(time)+"</span><span class='msg_seperator'> | </span>&l
$("#chatEntries").append('<div class="messagesOLD">' +
"<span class='msg_date'>"+dateFormat(time)+"</span><span class='msg_seperator'> | </span><span class='msg_name'>"+ pseudo + '</span> : ' + replaceEmoticons(msg) + '</div>');
数组/对象名称是我希望在消息中替换的实际字符集。
所有笑脸的位置如下:
最后,我希望所有消息看起来像:
Hello how are you all doing today? :D
将成为:
Hello how are you all doing today? <img src='http://example.com/public/images/smileys/laugh.png' id='chat_smls'/>
你好,大家今天好吗?
更新:
当字符集前后都有空格时,它只需要替换字符集
因此:
Hello:D=无效。Hello:DHow=无效
Hello:DHow=无效
Hello:D How=有效。只需调用replace:
function replaceEmoticons(str) {
for (var key in smileys) {
var re = new RegExp("(?:^|\\s)" + key.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&") + "(?=$|\\s)", 'g');
str = str.replace(re, "<img src='http://example.com/public/images/smileys/" + smileys[key] + "' id='chat_smls'/>");
}
return (str);
}
输入:
你好,你们今天好吗D
结果:
使用一个对象:{}
只需将smileys=[]更改为smileys={};是吗?是的,没错。您甚至可以使用一个完整的对象文本,比如var smileys={:/“:“derp.png”、“:)”:“happy.png”、…}
这缺少了您想要添加的内容/g如果smileys数组中的位置发生了更改,则可以将http://
中的:///code>替换为derp smiley。我已经用规范更新了@OmriAharon提到的那些情况的问题。我刚刚通过运行代码注意到了一些情况:如果我说enter::D Hello?:它只将第一个:D转换为smiley,另一个保持为char set。只是修复了它。处理您添加的需求。
function replaceEmoticons(str) {
for (var key in smileys) {
var re = new RegExp("(?:^|\\s)" + key.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&") + "(?=$|\\s)", 'g');
str = str.replace(re, "<img src='http://example.com/public/images/smileys/" + smileys[key] + "' id='chat_smls'/>");
}
return (str);
}