我有一個包含通過表情符號在代碼中NSString的按以下格式的NSArray:的NSString使用表情符號
0x1F463
如何我現在可以將它們轉換成的NSString與正確的格式?
用這種方法我能夠產生一個「繪文字」 -NSString:
NSString *emoji = [NSString stringWithFormat:@"\U0001F463"];
但是這是唯一可能與不變NSString的。我怎樣才能轉換整個NSArray?
我有一個包含通過表情符號在代碼中NSString的按以下格式的NSArray:的NSString使用表情符號
0x1F463
如何我現在可以將它們轉換成的NSString與正確的格式?
用這種方法我能夠產生一個「繪文字」 -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
}
}
使用您的採樣值四個數組,我得到4對赤腳。
作品非常感謝! – patrickS
不客氣! – trudyscousin
你可以這樣說:
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);
'-stringWithFormat:'不是*生成*任何東西 - 你自己正在做的是你正在餵它的字符串常量。 (不要說你濫用了'-stringWithFormat':不管怎麼說,你都沒有提供一個格式化字符串。)我不明白你陣列中的字符串有什麼問題。他們爲什麼不像現在這樣工作? – trudyscousin
我必須將字符串「0x1F463」轉換爲「\ U0001F463」才能找到表情符號的Unicode字符。但我從外部plist得到NSArray – patrickS
所以你說你的數組包含*字面*包含「0x1F463」的字符串,對嗎? – trudyscousin