Cocoa 漢字轉拼音最簡單的方法

来源:互联网 发布:matlab矩阵绘制散点图 编辑:程序博客网 时间:2024/04/28 14:29

在開發中文應用的過程中,有時會與到需要將漢字轉爲拼音的需求,在網上搜索一下會發現不少這樣的庫,這些庫的實現多數是通過查表的方式,而且實現比較複雜,使用和維護不是很方便。其實,作爲幸福的Cocoa開發者,這項功能已經再Core Foundation的類庫中提供了,並且可以處理多種文字的轉譯,廢話少說,下面是代碼:

1234
NSMutableString *string = [@"你好" mutableCopy];NSLog(@"Before: %@", string); // Before: 你好CFStringTransform((__bridge CFMutableStringRef)string, NULL, kCFStringTransformMandarinLatin, NO);NSLog(@"After: %@", string); // After: nǐ hǎo   

這裏使用的是CFStringTransform這個函數,函數的簽名如下:

123456
Boolean CFStringTransform (   CFMutableStringRef string,   CFRange *range,   CFStringRef transform,   Boolean reverse);

四個參數分別代表:待轉換的字符串(string),轉換的範圍(range),轉換的選項(transform),是否逆向轉換(reverse)。漢字轉拼音的關鍵就在於第三個參數transform常量,我們這裏使用的是kCFStringTransformMandarinLatin這個選項,對於處理其它的語言可以使用對應的選項,文檔中有所有選項的說明。

你會發現上面的轉換結果是帶拼音聲調標記的,但是有時候我們並不需要音標,對於這樣的需求,我們可以用另一個transform選項kCFStringTransformStripDiacritics進行處理:

123456
   NSMutableString *string = [@"你好" mutableCopy];   NSLog(@"Before: %@", string); // Before: 你好   CFStringTransform((__bridge CFMutableStringRef)string, NULL, kCFStringTransformMandarinLatin, NO);   NSLog(@"After: %@", string);  // After: nǐ hǎo     CFStringTransform((__bridge CFMutableStringRef)string, NULL, kCFStringTransformStripDiacritics, NO);   NSLog(@"Striped: %@", string); // Striped: ni hao

總結

Cocoa類庫經過20幾年的發展,已經是一個十分成熟的類庫,你總會發現它能用很少代碼實現意想不到的功能,所以有時候不要急於發明輪子,Cocoa的文檔中或許就已經有優雅的解決辦法了。

0 0
原创粉丝点击