本文介绍了如何在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中计算字素簇或感知的表情符号字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!