获取字符串中的表情符号数

Mik*_*ker 2 android character emoji android-edittext

我想知道用户输入了多少表情符号到EditText. 如果用户只输入表情符号,并且使用 3 个或更少,我希望能够在应用程序中以更大的字体显示该字符串。

现在我确实遇到了这篇文章,它确实有助于检测字符串中是否存在表情符号,但我无法弄清楚如何计算表情符号的数量。

检测字符串中的字符是否为表情符号(使用 Android)

有谁知道如何从字符串中获取表情符号数?

Roh*_*eja 5

    int emojiCount = 0;

    for (int i = 0; i < yourString.length(); i++) {
     int type = Character.getType(yourString.charAt(i));
      if (type == Character.SURROGATE || type == Character.OTHER_SYMBOL) {
       emojiCount++;
      }
    }

return emojiCount/2;
Run Code Online (Sandbox Code Playgroud)


Mar*_*and 5

另一种方法是利用EmojiCompat. 此代码假定您EmojiCompat在应用程序启动时进行了初始化。这里的基本思想是EmojiCompat处理您的CharSequenceEmojiSpan在任何表情符号出现的地方插入实例,然后检查结果,返回EmojiSpan已处理的Spannable.

public static int getEmojiCount(CharSequence charSequence) {
    int count = 0;
    CharSequence processed = EmojiCompat.get().process(charSequence, 0, charSequence.length() -1, Integer.MAX_VALUE, EmojiCompat.REPLACE_STRATEGY_ALL);
    if (processed instanceof Spannable) {
        Spannable spannable = (Spannable) processed;
        count = spannable.getSpans(0, spannable.length() - 1, EmojiSpan.class).length;
    }
    return count;
}
Run Code Online (Sandbox Code Playgroud)

不要忘记在 app gradle 中添加依赖项:

implementation 'androidx.emoji:emoji:1.1.0'
Run Code Online (Sandbox Code Playgroud)