gpt4 book ai didi

ios - 带有西里尔文到 UTF8/拉丁文编码的 NSString

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:07:49 25 4
gpt4 key购买 nike

我有一个来自网络服务的字符串,它是西里尔字母和拉丁/英文字符的混合体。当通过分隔句子中的单词构建数组时,使用 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 不允许我这样做。感谢您的帮助。

最佳答案

这对我有用:

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/

关于ios - 带有西里尔文到 UTF8/拉丁文编码的 NSString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21746110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com