我想找出有多少表情符号的用户输入到一个EditText。如果用户只输入表情符号,并且使用3或更少的表情符号,我希望能够在应用程序中以更大的字体显示该字符串。
现在我确实看到了这篇文章,它确实有助于检测字符串中是否存在表情符号,但我还不能计算出表情符号的数量。
Detecting if a character in a String is an emoticon (using Android)
有人知道我如何从字符串中获取表情符号的数量吗?
发布于 2017-09-07 21:43:35
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;发布于 2018-04-16 12:01:21
另一种方法是利用EmojiCompat。这段代码假定您在应用程序启动时初始化了EmojiCompat。这里的基本思想是让EmojiCompat处理您的CharSequence,在任何出现表情符号的地方插入EmojiSpan实例,然后检查结果,返回处理后的Spannable中的EmojiSpan实例计数。
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'发布于 2018-09-12 18:40:28
我的方法是导入这个库:
implementation 'com.vdurmont:emoji-java:4.0.0'然后,我创建了一个实用方法,将计算表情符号的字符串长度设为1:
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‘,我会使用下面这行:
var emojiCount = EmojiParser.extractEmojis(s).size;这说明了所有最新的表情符号(取决于你的库的更新程度)。检查其他人在库上做的一些分支,因为他们在某些情况下添加了缺少的表情符号模式。
https://stackoverflow.com/questions/45241081
复制相似问题