我有一个来自网络服务的字符串,它是西里尔字母和拉丁文/英文字符的混合体。当通过分隔句子中的单词来构建数组时,在使用NSLog时它显示的是unicode而不是字母。我想知道如何将任何西里尔/ unicode字符转换为适当的可读拉丁/英语单词。例如..
NSString *sentence = @"The Tobе Elіte"; (e in Tobe is Cyrillic, and i in Elite)
将字符串中的每个单词放入数组后,打印时我得到:
(
The,
"Tob\U0435",
"El\U0456te"
)
我需要这个音译成拉丁语“Tobe”和拉丁语“Elite”。如果我尝试比较我现在做的事情
if(![@"Tobe" isEqualToString:[array objectAtIndex:1]])
//Tobe is not Equal to Tob\U0435
如果我解释得太可怕,我会道歉,如果您有任何问题需要帮助我更好地理解我的问题,请随时提出。我已经尝试了几种方法来将其编码为正确的UTF8。例如,这不起作用:
NSMutableString *buffer = [string mutableCopy];
CFMutableStringRef bufferRef = (__bridge CFMutableStringRef)buffer;
CFStringTransform(bufferRef, NULL, kCFStringTransformToLatin, false);
最终我需要使用NSPredicate搜索数组中的匹配单词,但是在数组中使用Unicode时我不允许这样做。任何帮助表示赞赏。
答案 0 :(得分:2)
这对我有用:
NSString *sentence = @"The Tobе Elіte";
NSMutableString *buffer = [sentence mutableCopy];
CFMutableStringRef bufferRef = (__bridge CFMutableStringRef)buffer;
CFStringTransform(bufferRef, NULL, kCFStringTransformToLatin, false);
CFStringTransform(bufferRef, NULL, kCFStringTransformStripDiacritics, false);
NSArray *arr = [buffer componentsSeparatedByString:@" "];
NSLog(@"%@", arr);
你可以在这里找到更多信息: http://nshipster.com/cfstringtransform/