11

我正在计算提供的 Java 字符串中感知到的表情符号字符的数量。我目前正在使用emoji4j库,但它不适用于像这样的字素集群:‍‍‍</p>

调用EmojiUtil.getLength("‍‍‍")return4而不是1,同样调用EmojiUtil.getLength("‍‍‍")return5而不是2

Java中是否有任何API或方法String可以轻松计算字素簇?

我一直在寻找,但可以理解的是codePoints(),a 上的方法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类似"‍‍‍".

4

1 回答 1

2

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

于 2016-12-19T12:38:18.147 回答