Emojis
まず、絵文字が何であるかを理解しましょう。絵文字は、Unicodeで実装されているので、多くの文字の組み合わせです。たとえば、「光肌色男性すくめ絵文字は」実際には次の5文字を組み合わせている:
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)
UnicodeをJavaScriptで
グッドニュースは、我々は単に肌のトーンなしバージョンを取得する0x1f3fbを削除することができ、あります。悪いニュースは、しかしである、それはそれはsurrogate pairが何であるかを知らないので間違っている代わりに
0xd83e 0xdd37 0xd83c 0xdffb 0x200d 0x2642 0xfe0f
└───────── Uh oh ─────────┘
として表示されますので、JavaScriptは、UTF-16をサポートしていません。正しいコードポイントを計算するには、UTF-16 standardを参照し、必要な修正を加えなければなりません。幸い、someone else already did the hard work、ここでは、私は、適切なUTF-16に文字列を変換すると、私はしたくない部分を削除しています:
// 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/
今では、あなた絵文字の仕事は、あなたもこれを行うことができます方法を理解:それはその背後にある概念を理解せずに動作する理由もはるかに高速ではなく、正確には明らかに動作し
// 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/
私がしたいことはiOSの中で、私は(色の絵文字をサポートしていない)ことができない色とAndroidで見ることができるので、黄色のいずれかに着色された絵文字を変換することで、回避策は黄色のものを見ることです。 – gusgard