Dynamically create NSString with Unicode emoji
我有字符串
如何实现呢?
退后一步:您拥有的数字1F6603 16 sub>是Unicode代码点,为使其尽可能简单,它是该索引的索引。所有Unicode项目列表中的表情符号。这与计算机实际处理的字节不同,后者是\\\\"编码值\\\\"(从技术上讲,是代码单位。
当编写文字
在运行时不能,请修改该文字并以正确的字节结尾,因为编译器已完成工作并下床。
(您可以在书中深入了解此内容及其与
这将导致我们执行所需的过程:对于任意代码点,这可能无法按预期工作;并非所有代码点都有效。)
*注意,它对\\\\" normal \\\\"字符串(如
所以您想要一个带有动态unicode字符的字符串。
1 | [NSString stringWithFormat:@"Hi there! %C", (unichar)(0x01F600 + arc4random_uniform(10))]; |
strike>
更新:有效的答案
@JoshCaswell对
这是我的答案 因此,正在使用中... 更新2 最后,放入一个类别使其变为真正的Objective-C。 再次使用中...
2
3
4
uint32_t bytes = htonl(character); // Convert the character to a known ordering
return [[NSString alloc] initWithBytes:&bytes length:sizeof(uint32_t) encoding:NSUTF32StringEncoding];
}
2
NSString *message = [NSString stringWithFormat:@"Hi there! %@", emoji];
2
3
4
5
6
7
8
9
+ (instancetype)stringWithUnicodeCharacter:(uint32_t)character;
@end
@implementation NSString (MyString)
+ (instancetype)stringWithUnicodeCharacter:(uint32_t)character {
uint32_t bytes = htonl(character); // Convert the character to a known ordering
return [[NSString alloc] initWithBytes:&bytes length:sizeof(uint32_t) encoding:NSUTF32StringEncoding];
}
@end
2
NSString *message = [NSString stringWithFormat:@"Hi there! %@", emoji];