gpt4 book ai didi

objective-c - Apple Emoji/遍历 NSString

转载 作者:太空狗 更新时间:2023-10-30 04:00:25 24 4
gpt4 key购买 nike

我想遍历表情符号输入字符串(来自 UITextField)的“字符”,然后一个接一个地用 UILabel 显示这些表情符号图标。

for (int i=0; i < len; i++) {  
unichar c = [transformedString characterAtIndex:i];
[label setText:[NSString stringWithFormat:@"%C", c]];
...

这适用于 ASCII 文本,但不适用于 Emoji 字体(除心形符号外均为空)。正如我所注意到的,单个表情符号图标由字符串中的 2 个字符表示。据我所知,表情符号使用私有(private)区域 unicode 字符。

有什么办法可以做到这一点吗?

非常感谢,你让我不再头疼......

最佳答案

您可以在 NSString 上使用其中一种枚举*实例方法,并使用选项 NSStringEnumerationByComposedCharacterSequences

- (void)enumerateSubstringsInRange:(NSRange)range
options:(NSStringEnumerationOptions)opts
usingBlock:(void (^)(NSString *substring,
NSRange substringRange,
NSRange enclosingRange,
BOOL *stop))block

NSString 使用 UTF-16,它将一些代码点表示为两个 16 位值。您也可以手动检查字符串中的这些“代理项对”并手动组合它们,但那样您仍然只会获得代码点而不是字符。


[transformedString
enumerateSubstringsInRange:NSMakeRange(0,[transformedString length]
options:NSStringEnumerationByComposedCharacterSequences
usingBlock: ^(NSString *substring,NSRange,NSRange,BOOL *)
{
[label setText:substring];
}];

关于objective-c - Apple Emoji/遍历 NSString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10044196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com