Objective-Cで文字列の比較を行う方法のメモ

(iOS 6で試してます。)

ポイント

・isEqual

・==演算子は注意

サンプル

@implementation ViewController

– (void)viewDidLoad

{

    [super viewDidLoad];

    

    // パターンを準備

    NSString *original = @”Objective C.”;

    NSString *compareZ = @”Objective C.”;

    NSString *compareA = @”Objective”;

    NSString *compareB = @”iOS.”;

    

    // original, compareZ と同じ文字列に

    compareA = [compareA stringByAppendingString:@” C.”];

    //比較

    

    // 1. ポインタ比較 –>

    // compareZAは定義のタイミングを変えている

    // TRUE

    // ( 上記のように@””を同一にすると、同じポインタになるみたい。)

    BOOL check0 = (original == compareZ);

    // FALSE

    BOOL check1 = (original == compareA);

    

    // 2. 文字列比較  –> TRUE

    BOOL check2 = [original isEqual:compareA];

    

    // 3. 文字列比較  –> TRUE

    BOOL check3 = [original isEqualToString:compareA];

    

    // 4. 文字列比較  –> FALSE

    BOOL check4 = [original isEqual:compareB];

    

    

    

    //結果 を出力

    NSLog(check0 ? @”TRUE” : @”FALSE”);

    NSLog(check1 ? @”TRUE” : @”FALSE”);

    NSLog(check2 ? @”TRUE” : @”FALSE”);

    NSLog(check3 ? @”TRUE” : @”FALSE”);

    NSLog(check4 ? @”TRUE” : @”FALSE”);

    

}

@end