Transliterate / transpose NSString中的字符 [英] Transliterate/transpose the characters in the NSString
问题描述
我想将一个西里尔字符串音译成最接近拉丁语的字符串。例如。 матрешка=>matreshka,водка=>伏特加。理想情况下,我想要在NSString或其他已经知道字母表所有内容的地方准备好使用方法,并且可以进行对话。
I want to transliterate a cyrillic string to it's closest latin equivalent. E.g. "матрешка" => "matreshka", "водка" => "vodka". So ideally I want some ready to use method on the NSString or somewhere else that already knows everything about the alphabets and can do the conversation.
但是如果这样的功能没有在iOS API中存在然后我会对ruby的 tr 方法感到非常满意,该方法只是使用指定为参数的简单映射替换字符串中的字符。
But if such functionality doesn't exist in the iOS APIs then I will be totally happy with something like ruby's tr method that just replaces the characters in a string using a simple mapping specified as a parameter.
"баба".tr('абвгд', 'abvgd')
推荐答案
尝试 CFStringTransform
CFMutableString函数 kCFStringTransformToLatin
转换标识符或使用简单映射创建NSString类别。
Either try CFStringTransform
function of CFMutableString with kCFStringTransformToLatin
transform identifier or make a NSString category with simple mapping.
由问题海报编辑:更具体地说应该是:
NSMutableString *buffer = [@"русский язык" mutableCopy];
CFMutableStringRef bufferRef = (__bridge CFMutableStringRef)buffer;
CFStringTransform(bufferRef, NULL, kCFStringTransformToLatin, false);
NSLog(@"%@", buffer); // outputs "russkij âzyk"
这篇关于Transliterate / transpose NSString中的字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!