[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と比較してしまわないようにしましょうね。
検索システム 実務者のための開発改善ガイドブック
¥3,960 (2025-04-19 07:15 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)Perplexity 最強のAI検索術
¥1,980 (2025-04-18 06:50 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)ちいかわ
(2025-04-19 22:26 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)2011-12-21