首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript跨平台表情符号在iOS和安卓中的应用

JavaScript跨平台表情符号在iOS和安卓中的应用
EN

Stack Overflow用户
提问于 2017-08-18 00:44:27
回答 1查看 1.2K关注 0票数 1

在Android中获得正常的表情符号(黄色的,在图像中第一位)的最佳方法是什么?如果表情符号可以带有不同的颜色(iOS表情符号)。原因是Android没有彩色表情符号。

所有的表情符号在android中都没有第一个显示“?”符号。

我需要解析JavaScript中的表情符号,但我没有找到任何好的库。也许有一个替换函数可以解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-18 06:06:30

表情符号

首先,让我们了解什么是表情符号。表情符号是许多字符的组合,因为它是在Unicode中实现的。例如,“浅色肤色男性耸肩表情”实际上是以下5个字符的组合:

代码语言:javascript
复制
0x1f937 0x1f3fb 0x200d 0x2642 0xfe0f

- 0x1f937: Person Shrugging
- 0x1f3fb: Light skin tone  
- 0x200d: Zero width joiner     (Used to combine two characters, in this case
                                 the Light skin tone Person shrugging and the
                                 male sign.)
- 0x2642: Male sign
- 0xfe0f: Variation selector-16 (Used to indicate an Emoji)

JavaScript中的Unicode

好消息是,我们可以简单地删除0x1f3fb以获得没有肤色的版本。坏消息是,JavaScript不支持UTF-16,因此它显示为

代码语言:javascript
复制
0xd83e 0xdd37 0xd83c 0xdffb 0x200d 0x2642 0xfe0f
└───────── Uh oh ─────────┘

相反,这是不正确的,因为它不知道代孕对是什么。要计算正确的代码点,我们必须引用UTF-16标准并进行必要的更正。幸运的是,其他人已经做了艰苦的工作和这里我将字符串转换成适当的UTF-16,并删除我不想要的部分:

代码语言:javascript
复制
// Defines the range of skin tone modifiers
var modifiersMin = 0x1F3FB, modifiersMax = 0x1F3FF;

// Emoji with U+1F3FB "light skin tone" modifier combined with "male sign"
var string = new UnicodeString("‍♂️");

// Removes the modifier
string = new UnicodeString(string.codePoints.filter(c => {
    return c < modifiersMin || c > modifiersMax;
});

alert(string.toString());

您可以在这里看到它的作用:https://jsfiddle.net/DerekL/b5848tor/

现在您已经了解了表情符号是如何工作的,您也可以这样做:

代码语言:javascript
复制
// The replace function that you would like
var skinToneModifiers = new RegExp("\ud83c[\udffb-\udfff]", "g");
var string = "‍♂️";
// Remove skin tone modifier
string = string.replace(skinToneModifiers, "");

它的工作速度要快得多,但不太清楚它为什么工作,而不了解其背后的概念。

在行动中看到它:https://jsfiddle.net/DerekL/sn4n689r/

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45746872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档