我想计算所提供的 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 ,效果更好。我的原始代码块不需要任何更改(除了 import 语句),因为它只是提供了 BreakIterator
的不同实现。
关于java - 如何计算 Java 中的字素簇或 "perceived"表情符号字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40878804/