ios - NSString 长度与标志表情符号

标签 ios objective-c nsstring emoji

我正在尝试获取包含一堆表情符号(包括标志字符)的 NSString 的长度。现在我知道如何获取包含表情符号的字符串的长度:

__block NSInteger length = 0;
[string enumerateSubstringsInRange:range
                           options:NSStringEnumerationByComposedCharacterSequences
                        usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
    length++;
}];

但是,“NSStringEnumerationByComlatedCharacterSequences”在这种情况下不起作用。普通的表情符号是由两个字符放在一起组成的。旗帜表情符号由两个类似表情符号的字符组合而成。因此,在没有任何枚举技术的情况下,一个旗帜表情符号的长度为 4。

如何获得包含标志表情符号的 NSString 的正确长度(字符数)?

最佳答案

我尝试了以下解决方案。 对于普通表情符号,它返回 2,对于标志,它返回 4。 这也适用于普通字符和特殊字符。

const char *cString = [string UTF8String];

int textLength = (int)strlen(cString);

关于ios - NSString 长度与标志表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32365686/

相关文章:

ios - worklight 6.2.0.1 中使用的是哪个版本的 cordova?最新的 ifix 是否为 iOS 混合应用程序提供 64 位支持?

objective-c - loadView 无法访问我的属性,抛出 EXC_BAD_ACCESS

objective-c - 无法从该类的 Swift 扩展中的 Objective-C 类调用某些方法

objective-c - NSTextField 不会更新

objective-c - NSString 固定长度

ios - 对于 iOS 8 和 iOS 9 中的某些特定范围,NSMutableAttributedString 不显示不同颜色的字符串

ios - Codemagic IOS 构建需要很长时间才能完成

ios - UIScrollViewKeyboardDismissModeOnDrag 当没有滚动不起作用时

ios - 如何正确加载来自 Firebase 的信息?

Objective-C 计算字符串值