NSStringから1文字を取ったらunichar
Javaプログラマ向け、Objective-Cにおける文字列と1文字の扱い。
Javaでは、char型は2バイトのUnicode 1文字を表す。
Objective-Cでは、unichar型が1文字に相当する。
たとえば、Javaでは以下のように、String#charAt で1文字を取得できる。
public class Test { public static void main(String[] args) { String s = "あいうえお"; char c = s.charAt(0); if ('あ' == c) { // true System.out.format("%c", c); } } }
これと同じことをObjective-Cでは以下のように記述できる。
int main(int argc, const char** argv) { @autoreleasepool { NSString* s = @"あいうえお"; unichar c = [s characterAtIndex:0]; if (0x3042 == c) { NSLog(@"%C", c); } } }
文字リテラルを直接 'あ' と書けないことと、書式化文字列が %C (大文字)であることに注意。
扱う文字がASCIIコードだけであることが明白ならば、以下のようにC言語文字列(char配列)として扱ってもよいだろう。
NSString* s = @"ABCDE"; const char* ptr = [s cStringUsingEncoding:NSASCIIStringEncoding]; if ('A' == ptr[0]) { NSLog(@"%c", ptr[0]); }