Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
表情符号使用的Android计数字符_Android_Emoji_Utf - Fatal编程技术网

表情符号使用的Android计数字符

表情符号使用的Android计数字符,android,emoji,utf,Android,Emoji,Utf,我正在尝试获取EditText中表情符号已使用的字符数。原因是我的EditText的最大长度为25个字符 我已经查看了其他获得计数的示例,例如: titleView.getText().toString()).length() 这将每个表情符号统计为2个字符,因此我的输入将在12个表情符号=24个字符时停止 我遇到的问题是,我认为这个计数是关闭的,我的服务器希望接收的字符串不超过25个字符,因此它必须截断其中一些表情符号 当我在我的应用程序中检索这些数据时,会导致它崩溃。我的web服务不知道如何

我正在尝试获取EditText中表情符号已使用的字符数。原因是我的EditText的最大长度为25个字符

我已经查看了其他获得计数的示例,例如:

titleView.getText().toString()).length()

这将每个表情符号统计为2个字符,因此我的输入将在12个表情符号=24个字符时停止

我遇到的问题是,我认为这个计数是关闭的,我的服务器希望接收的字符串不超过25个字符,因此它必须截断其中一些表情符号

当我在我的应用程序中检索这些数据时,会导致它崩溃。我的web服务不知道如何处理它。它进入onSuccess回调,但当我尝试查询响应时,它表示它是一个null对象

如果每个表情符号都有2个字符长,为什么这对我不起作用


如果它们不一致,如何获得实际计数?

我的方法是导入此库:

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;
}
通常,要“获取字符串中的表情符号计数”,我会使用以下行:

var emojiCount = EmojiParser.extractEmojis(s).size;

这说明了所有最新的表情符号(取决于您的库如何更新它)。检查其他人在库中制作的一些叉子,因为它们在某些情况下添加了缺失的表情模式

我也有同样的问题。我修复了它,如下所示

步骤1:导入库

implementation group: 'com.ibm.icu', name: 'icu4j', version: '65.1'
步骤2:创建方法

 fun String.getGraphemeLength(): Int {
    val it: BreakIterator = BreakIterator.getCharacterInstance()
    it.setText(this)
    var count = 0
    while (it.next() != BreakIterator.DONE) {
        count++
    }
    return count
}
第三步:注意。你必须进口

import com.ibm.icu.text.BreakIterator
第四步:如何使用

val text = "insert your emoji"
val count = text.getGraphemeLength()
Log.e("COUNT " + count+"")

你确定长度是问题,而不是表情本身吗?它是否只适用于一个表情符号?是的,我只使用了2或3个表情符号进行了测试,效果很好。在发送请求之前,您是否使用了任何编码方法?您的服务器是否希望获得不超过25个字符或25个字节?@Zakovitch在发送请求之前,我没有对其进行编码