[iOS,Objective-C] NSStringで特定文字の位置を取得する方法

JavaScriptにおける indexOf() や PHPによる strpos(), mb_strpos() のような、特定のテキストの出現位置を他のテキストから取得する方法をご紹介します。

NSSting::rangeOfString

rangeOfStringメソッドに引数としてNSString型のテキストを渡すと、返り値にそのテキストの出現位置(location)と、長さ(length)が設定されたNSRangeデータを返します。

もし見つからなければlocationにNSNotFound、lengthに0が設定されるので、この値を見ることで位置を特定することができます。

NSNotFound は取得してみると中身は特定の数値データなのですが、この数値はしばしば変更されるので、数値だけで有無を判断しないようにしてください。

rangeOfStringの使用例

NSString* searchStr = @"good";
NSString* targetStr = @"good morning";
NSRange range = [targetStr rangeOfString:searchStr];
if (range.location == NSNotFound) {
NSLog(@"見つかりませんでした。");
} else {
NSLog(@"出現位置:%d 長さ:%d", range.location, range.length);
}

NSLogの出力結果は以下のようになります。

出現位置:0 長さ:4

くれぐれも出現位置(location)のあるなしを0と比較してしまわないようにしましょうね。

このページをシェアする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

2011-12-21