3

我有一个 NSArray,其中包含 NSStrings 和以下格式的表情符号代码:

0x1F463

我现在如何将它们转换为具有正确格式的 NSString?

使用这种方法,我可以生成一个“Emoji”-NSString:

NSString *emoji = [NSString stringWithFormat:@"\U0001F463"];

但这只有在使用常量 NSString 时才有可能。如何转换整个 NSArray?

4

2 回答 2

4

不是我最好的工作,但它似乎工作:

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
    }
}

使用包含四个样本值的数组,我得到了四对赤脚。

于 2012-12-22T02:27:58.550 回答
2

你可以这样做:

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);
于 2012-12-22T02:26:29.047 回答