我试图获取我的EditText中的emojis已用完的字符数。原因是我的EditText的maxLength为25个字符。
我已经看过其他获得计数的例子,例如:
titleView.getText().toString()).length()
这将每个表情符号计为2个字符,因此我的输入停止在12 emojis = 24个字符。
我遇到的问题是我认为这个计数是关闭的,我的服务器期望收到不超过25个字符的字符串,所以它必须截断一些这些表情符号。
然后,当我在我的应用程序中检索此数据时,它会导致崩溃。我的网络服务不知道如何处理它。它进入onSuccess回调,但当我尝试查询响应时,它说它是一个空对象。
如果每个表情符号统一为2个字符长,为什么这对我不起作用?
如果他们不统一,我怎么得到真正的计数?
我的方法是导入这个库:
implementation 'com.vdurmont:emoji-java:4.0.0'
然后我创建了一个实用工具方法来获取将emojis计为1的字符串的长度:
fun getLengthWithEmoji(s: String): Int{
var emojiCount = EmojiParser.extractEmojis(s).size;
var noEmojiString = EmojiParser.removeAllEmojis(s);
var emojiAndStringCount = emojiCount + noEmojiString.length;
return emojiAndStringCount;
}
一般来说,'以字符串形式获取表情符号计数'我会使用这一行:
var emojiCount = EmojiParser.extractEmojis(s).size;
这可以解释所有最新的表情符号(取决于你的图书库的最新版本)。检查其他人在库上做的一些分叉,因为它们在某些情况下添加了缺少的表情符号模式。