如何计算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 楼答案
我最终使用了ICU library,效果更好。我的原始代码块不需要任何更改(除了导入语句),因为它只是提供了
BreakIterator
的不同实现