我想使用 Javascript 的 split 函数来分割表情符号字符串。 stackoverflow上有很多类似的问题,但我找不到任何完整的解决方案。所以我用我自己的方式来做:
a) 将 split 函数与正则表达式结合使用。
b) 通过正则表达式 unicode 匹配拆分表情符号字符:从 \uD800 到 \uDBFF 以及从 \uDC00 到 \uDFFF。
c) 在此正则表达式中,排除带连接符的零 (\u200D) 和变体选择器 (\uFE0F) 字符。
所以我写如下:
var p = '????????????????????????????????????????????????????????????????????❤️????????';
并将其拆分:
var split = p.split(/(?![\u200D\uFE0F])([\uD800-\uDBFF][\uDC00-\uDFFF])/);
但结果是错误的:(
["", "????", "", "????", "", "????", "", "????", "", "????", "", "????", "", "????", "", "????", "", "????", "", "????", "", "????", "", "????", "", "????", "", "????", "", "????", "", "????", "", "????", "❤️", "????", "", "????", ""]
我是否使用了正则表达式的排除选择器?如果正确的话,是我的想法造成的错误吗?
预期结果需要为:["????????", "????????", "????????", "????????", "????????", "????????????????", "????", "????" , "????❤️????????"]
===
我想更新信息。我为我的网站解决了这个问题:表情符号在线 https://www.emojionline.org。你可以测试一下。我只是使用包含所有表情符号的字典,然后使用替换功能将每个表情符号替换为 |emoji|。我可以用符号|分割字符串表情符号。效果很好:)