【Objective-C】unicharとNSSringの相互変換【文字 ⇔ 文字列】

文字を文字列に変換する方法(unichar to NSString)

クラスメソッドstringWithFormat:によるフォーマット機能を活用することで、unichar型の文字をNSString型の文字列に変換することができます。

NSString *s = [NSString stringWithFormat:@"%C", 0x3042]; // s == @"あ"

このように、Objective-Cでは変換指定子として%Cを用いることができます。一般的な%cの場合は8ビットのASCII文字列として読み取られますが、%Cであれば16ビットのUnicode文字として扱われます。

クラスメソッドstringWithCharacters:を活用する方法もあります。

unichar c = 0x3042;
[NSString stringWithCharacters:&c length:1]; // @"あ"

unichar s[] = {0x3042, 0x303};
[NSString stringWithCharacters:&s length:2]; // @"あい"

第一引数には文字列のポインタを指定します。第二引数には読み取る文字列の長さを指定します。

文字列を文字に変換する方法(NSString to unichar)

NSString型の文字列をunichar型の文字に変換する場合には、characterAtIndex:メソッドを用います。

unichar a = [@"あい" characterAtIndex:0]; // a == 'あ'
unichar i = [@"あい" characterAtIndex:1]; // i == 'い'

第一引数には文字列のインデックスを指定します。インデックスとして0が指定された場合には、文字列の先頭文字が取得できます。

広告