3
表情符我期待計數中,提供的Java字符串察覺的表情符號字符數。我目前使用的emoji4j庫,但它並不適用於字形集羣像這樣的工作:如何計算字形集羣或「知覺」在Java中
調用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
。
有趣的話題。我試圖找出這是什麼類型的字符(你的第一個例子),我想知道這些組合的emojis是否是真正的unicode標準或供應商採用的約定。你的第一個例子是女人,女人,男孩,男孩和零寬度細木工的unicode字符的組合。 http://emojipedia.org/emoji/%F0%9F%91%A9%E2%80%8D%F0%9F%91%A9%E2%80%8D%F0%9F%91%A6%E2%80 %8D%F0%9F%91%A6/ –
將字符合併到表情符號的一種方法是使用零寬度連接器代碼點(ZWJ/U + 200D)。因此,獲取可見字符數的一種方法是遍歷所有unicode代碼點,並且每當遇到ZWJ時,都會減去兩個(對於ZWJ和合併到前一個字符中的下一個字符)。然而,有更多的方法來編寫emojis(和unicode字符),所以你最好的選擇是等待emoji4j更新或自己做。 –
[確定用戶感知字符數量的正確算法是什麼?](http://stackoverflow.com/questions/9097572/whats-the-correct-algorithm-to-determine-number-of-user - 感知字符) –