本文介绍了如何在Java中计算字素簇或感知的表情符号字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望计算提供的Java字符串中可识别的表情字符的数量。我当前使用的是emoji4j库,但它不适用于这样的字素群集:👩‍👩‍👦‍👦

调用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

推荐答案

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

这篇关于如何在Java中计算字素簇或感知的表情符号字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-30 18:17