android - 获取字符串中的表情符号计数

标签 android android-edittext character emoji

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

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

Detecting if a character in a String is an emoticon (using Android)

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

最佳答案

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

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;
}

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

implementation 'androidx.emoji:emoji:1.1.0'

关于android - 获取字符串中的表情符号计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45241081/

相关文章:

android - 编辑文本行间距额外问题

Android:TextInputEditText 仅在更改焦点后显示文本

android - 共享项目转换在背面的 fragment 中不起作用

android - 如何从当前 Activity 中获得结果然后返回到上一个 Activity

android - 在列表适配器android中水平移动Edittext的焦点

windows - 每个操作系统的文件路径中是否存在非法字符?

java - Java 声明困惑

java - 如何计算 Java 数组用户输入的字符数?

android - 如何修复 Eclipse/Android 安装?图形 XML 编辑器中的 PNG 加载问题

Android以编程方式加载字符串数组