我正在为游戏项目开发一个聊天客户端,我正在实现表情符号。表情符号应该在聊天中显示的基本规则是,当它们直接位于文本旁边时,它们不会出现。
我创建了正则表达式:\ B(表情文本)\ B。
不幸的是,我遇到了一个问题,即除了包含字母的表情符号外,每个表情符号的效果都非常好。 (例如:D,O_o等)
我不确定如何纠正这种情况。
// apply the Google Services Plugin
apply plugin: "com.google.gms.google-services"
这是表情符号数组的一部分,用于上下文。
app/google-services.json
答案 0 :(得分:1)
当它们直接位于文本旁边时不会出现
这听起来更像是要检查周围的空白,而不是\B
(“非单词边界”)。
那是:
var pattern = new RegExp('(^|\\s)' + emoticon.string.replace(/\W/g, '\\$&') + '(?!\\S)', 'g');
text = text.replace(pattern, function (m0, m1) { return m1 + emoticon.img; });
注意事项:
(^|\s)
检查(并捕获)字符串或空白字符的开头.replace(/\W/g, '\\$&')
转义表情符号中所有潜在的正则表达式元字符(这意味着您可能需要在表情符号列表中将':\\)'
更改为':)'
(?!\S)
(“后面没有非空格字符”)确保表情符号后跟空格或字符串结尾(我们不能在开头使用相同的技巧,因为JavaScript没有“支持后视”.replace(pattern, '$1' + emoticon.img)
执行此操作,但如果emoticon.img
最终包含$
理解和解释的特殊.replace
模式之一,则会导致问题