有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我希望统计提供的Java字符串中感知到的表情符号的数量。我目前正在使用emoji4j库,但它不适用于像这样的grapheme集群:👩‍👩‍👦‍👦

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

Java中的String上是否有任何API或方法可以方便地计算grapheme集群

我一直在四处寻找,但是可以理解的是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表示类似"👻👩‍👩‍👦‍👦"的内容


共 (1) 个答案

  1. # 1 楼答案

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