如何计算Java中的字形集群或“感知”表情符号字符

时间:2016-11-30 01:34:16

标签: java character emoji grapheme

我想要计算提供的Java字符串中感知的表情符号字符的数量。我目前正在使用emoji4j库,但它不适用于像这样的字形集群:

调用EmojiUtil.getLength("‍‍‍")会返回4而不是1,同样调用EmojiUtil.getLength("‍‍‍")会返回5而不是2

Java中String上是否有任何API或方法可以轻松计算字形集群?

我一直在四处寻找,但可以理解的是,codePoints()上的String方法不仅包括可见的表情符号,还包括零宽度的连接符。

我还尝试使用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之类的内容返回"‍‍‍"

1 个答案:

答案 0 :(得分:0)

我最终使用ICU library,效果更好。我的原始代码块不需要进行任何更改(除了import语句),因为它只是提供BreakIterator的不同实现。