我试图将表情符号添加到我的基于网络的聊天网站,并尝试使用RegExp来执行此操作。
它在某些情况下有效,但在其他情况下无效,而且它让我发疯。
表情符号存储在一个数据库中 - 我通过AJAX json将它们拉出来并通过生成的数组进行处理,然后替换它。以下是通过F12开发工具的响应:
当表情符号.SymbolShortcut值设置为':D'时,它可以正常工作,但不适用于' :('。
有问题的表情符号对象包含:
emoticon.FileLocation = '<i class="material-icons emoticon" style="font-size:16x;">sentiment_very_satisfied</i>'
//我知道这不是文件位置 - 坏对象命名:)
表情符号.SymbolShortcut =&#39;:(&#39;
var sMarkup;
var strRegEx = '';
var pText ='some text :('
$.each(emoticonArray, function (index, emoticon) {
strRegEx = emoticon.SymbolShortcut.replace(')', '[)]').replace('(', '[(]');
var regEx = new RegExp(strRegEx, "gi");
pText = pText.replace(strRegEx, emoticon.FileLocation);
});
总而言之,问题是替换不适用于&#39;:(&#39;字符组合,但确实适用于&#39;:D&#39;。
我希望pText变量中的字符&#39;:(&#39;替换为&#39; sentiment_very_satisfied&#39;,但我得到的所有字符都是我提交的字符串,没有替换由
提前致谢 - 欢迎所有和任何建议。如果我能提供更多信息以解决这个最令人沮丧的难题,请大声说出来。
答案 0 :(得分:-1)
更新了答案,同时考虑了OP的流程:
var pText ='some text :('
strRegEx = `:(`.replace(')', '\\)').replace('(', '\\(');
var regEx = new RegExp(strRegEx, "i");
pText = pText.replace(regEx,`<i class="material-icons emoticon" style="font-size:16x;">sentiment_very_satisfied</i>`);
console.log(pText);
&#13;