[OSX][iOS]読み仮名を得る | Cocoa練習帳

[OSX][iOS]読み仮名を得る

漢字混じりの日本文の読み仮名を得るサンプルコードを作ってみた。


- (IBAction)doRuby:(id)sender
{
	
    NSString *inputText = self.inputTextField.stringValue;
    
    NSMutableString *outputText = [[NSMutableString alloc] init];
    
    CFRange range = CFRangeMake(0, [inputText length]);
    CFLocaleRef locale = CFLocaleCopyCurrent();
    
    /* トークナイザーを作成 */
    CFStringTokenizerRef    tokenizer = CFStringTokenizerCreate(kCFAllocatorDefault,
                                                                (CFStringRef)inputText,
                                                                range,
                                                                kCFStringTokenizerUnitWordBoundary,
                                                                locale);
    
    /* 最初の位置に */
    CFStringTokenizerTokenType  tokenType = CFStringTokenizerGoToTokenAtIndex(tokenizer, 0);
    
    /* 形態素解析 */
    while (tokenType != kCFStringTokenizerTokenNone) {
        range = CFStringTokenizerGetCurrentTokenRange(tokenizer);
        
        /* ローマ字を得る */
        CFTypeRef   latin = CFStringTokenizerCopyCurrentTokenAttribute(tokenizer,
                                                                       kCFStringTokenizerAttributeLatinTranscription);
        NSString    *romaji = (__bridge NSString *)latin;
        
        NSString    *token = [inputText substringWithRange:NSMakeRange(range.location, range.length)];
        
        /* 平仮名に変換 */
        NSMutableString *furigana = [romaji mutableCopy];
        CFStringTransform((CFMutableStringRef)furigana, NULL, kCFStringTransformLatinHiragana, false);
        
        [outputText appendString:furigana];
        DBGMSG(@"%s token(%@) latin(%@) furigana(%@)" ,__func__, token, latin, furigana);
        
        CFRelease(latin);
        tokenType = CFStringTokenizerAdvanceToNextToken(tokenizer);
    }
    CFRelease(tokenizer);
    
    CFRelease(locale);
    
	
    [self.outputLabel setStringValue:outputText];
}
ソースコード GitHubからどうぞ。
https://github.com/murakami/workbook/tree/master/mac/Ruby - GitHub
関連情報 iOSでの形態素解析
CFStringTokenizer
iOS SDK プログラミング・リファレンス【Foundation/UIKit編】
【Cocoa練習帳】 http://www.bitz.co.jp/weblog/
http://ameblo.jp/bitz/(ミラー・サイト)
iOS SDK プログラミング・リファレンス【Foundation/UIKit編】/マイナビ
¥価格不明
Amazon.co.jp
iOS SDK プログラミング・リファレンス【Foundation/UIKit編】/マイナビ
¥4,298
Amazon.co.jp