ObjectiveCでNSString内の文字列検索をする方法のまとめ

ObjectiveCの文字列検索はrangeOfStringメソッドを使うことによって実現できますが、ほかの言語と比べてややこしい気がするのでまとめておきます。

基本的なrangeOfStringの使い方

NSString * str = @"abcdefg";
NSRange range = [str rangeOfString:@"cd"];
if (range.location == NSNotFound) {
NSLog(@"検索対象が存在しない場合の処理");
}

上のような例を実行すると、strのうち"cd"の範囲がNSRangeという形で返されます。
NSRangeは文字列の最初の文字の位置をrange.location、文字列の長さをrange.lengthとして取得でき、存在しない場合はlocationがNSNotFoundとなります。
上の例だとrange.location=2, range.length=2となります。

後ろから検索、範囲を指定して検索

NSString * str = @"ab000ab000ab000";
NSRange range1 = [str rangeOfString:@"ab" options:NSBackwardsSearch];//後ろから検索
NSRange range2 = [str rangeOfString:@"ab" range:NSMakeRange( 3, 9 )];//4~10文字の範囲で検索