首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取字符串中的Emoji计数

获取字符串中的Emoji计数
EN

Stack Overflow用户
提问于 2017-07-21 23:10:34
回答 5查看 3.6K关注 0票数 2

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

现在我确实看到了这篇文章,它确实有助于检测字符串中是否存在表情符号,但我还不能计算出表情符号的数量。

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

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

EN

回答 5

Stack Overflow用户

发布于 2017-09-07 21:43:35

代码语言:javascript
复制
    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;
票数 5
EN

Stack Overflow用户

发布于 2018-04-16 12:01:21

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

代码语言:javascript
复制
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中添加依赖项:

代码语言:javascript
复制
implementation 'androidx.emoji:emoji:1.1.0'
票数 5
EN

Stack Overflow用户

发布于 2018-09-12 18:40:28

我的方法是导入这个库:

代码语言:javascript
复制
implementation 'com.vdurmont:emoji-java:4.0.0'

然后,我创建了一个实用方法,将计算表情符号的字符串长度设为1:

代码语言:javascript
复制
fun getLengthWithEmoji(s: String): Int{
        var emojiCount = EmojiParser.extractEmojis(s).size;
        var noEmojiString = EmojiParser.removeAllEmojis(s);
        var emojiAndStringCount = emojiCount + noEmojiString.length;
        return emojiAndStringCount;
}

通常,为了'Get emoji count in string‘,我会使用下面这行:

代码语言:javascript
复制
var emojiCount = EmojiParser.extractEmojis(s).size;

这说明了所有最新的表情符号(取决于你的库的更新程度)。检查其他人在库上做的一些分支,因为他们在某些情况下添加了缺少的表情符号模式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45241081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档