我有一个 NSArray,其中包含 NSStrings 和以下格式的表情符号代码:
0x1F463
我现在如何将它们转换为具有正确格式的 NSString?
使用这种方法,我可以生成一个“Emoji”-NSString:
NSString *emoji = [NSString stringWithFormat:@"\U0001F463"];
但这只有在使用常量 NSString 时才有可能。如何转换整个 NSArray?
我有一个 NSArray,其中包含 NSStrings 和以下格式的表情符号代码:
0x1F463
我现在如何将它们转换为具有正确格式的 NSString?
使用这种方法,我可以生成一个“Emoji”-NSString:
NSString *emoji = [NSString stringWithFormat:@"\U0001F463"];
但这只有在使用常量 NSString 时才有可能。如何转换整个 NSArray?
不是我最好的工作,但它似乎工作:
for (NSString *string in array)
{
@autoreleasepool {
NSScanner *scanner = [NSScanner scannerWithString:string];
unsigned int val = 0;
(void) [scanner scanHexInt:&val];
NSString *newString = [[NSString alloc] initWithBytes:&val length:sizeof(val) encoding:NSUTF32LittleEndianStringEncoding];
NSLog(@"%@", newString);
[newString release]; // don't use if you're using ARC
}
}
使用包含四个样本值的数组,我得到了四对赤脚。
你可以这样做:
NSString *str = @"0001F463";
// Convert the string representation to an integer
NSScanner *hexScan = [NSScanner scannerWithString:str];
unsigned int hexNum;
[hexScan scanHexInt:&hexNum];
// Make a 32-bit character from the int
UTF32Char inputChar = hexNum;
// Make a string from the character
NSString *res = [[NSString alloc] initWithBytes:&inputChar length:4 encoding:NSUTF32LittleEndianStringEncoding];
// Print the result
NSLog(@"%@", res);