3
表情符我期待计数中,提供的Java字符串察觉的表情符号字符数。我目前使用的emoji4j库,但它并不适用于字形集群像这样的工作:如何计算字形集群或“知觉”在Java中
调用EmojiUtil.getLength("")
回报4
代替1
,同样叫EmojiUtil.getLength("")
回报5
代替2
。
是否有在Java中,可以很容易计算字形集群上String
任何API或方法?
我一直在四处打猎,但是可以理解的是String
上的codePoints()
方法不仅包括可见的表情符号,还包括零宽度的加入者。
我也尝试这种使用BreakIterator
:
public static int getLength(String emoji) {
BreakIterator it = BreakIterator.getCharacterInstance();
it.setText(emoji);
int emojiCount = 0;
while (it.next() != BreakIterator.DONE) {
emojiCount++;
}
return emojiCount;
}
但似乎相同的行为与codePoints()
方法,这样的事情""
返回8
。
有趣的话题。我试图找出这是什么类型的字符(你的第一个例子),我想知道这些组合的emojis是否是真正的unicode标准或供应商采用的约定。你的第一个例子是女人,女人,男孩,男孩和零宽度细木工的unicode字符的组合。 http://emojipedia.org/emoji/%F0%9F%91%A9%E2%80%8D%F0%9F%91%A9%E2%80%8D%F0%9F%91%A6%E2%80 %8D%F0%9F%91%A6/ –
将字符合并到表情符号的一种方法是使用零宽度连接器代码点(ZWJ/U + 200D)。因此,获取可见字符数的一种方法是遍历所有unicode代码点,并且每当遇到ZWJ时,都会减去两个(对于ZWJ和合并到前一个字符中的下一个字符)。然而,有更多的方法来编写emojis(和unicode字符),所以你最好的选择是等待emoji4j更新或自己做。 –
[确定用户感知字符数量的正确算法是什么?](http://stackoverflow.com/questions/9097572/whats-the-correct-algorithm-to-determine-number-of-user - 感知字符) –