Objectivecの文字列配列での文字列検索


87

Objectivecの文字列の配列から特定の文字列を検索したい。誰かがこの点で私を助けることができますか?


それはあなたの宿題ですか?それは簡単だと思います。なぜループして比較するだけですか?
vodkhang 2010年

na、宿題ではありません。iPhoneでリソースをあまり消費しない特定の文字列を検索するための最良のアルゴリズムが必要だったので、質問をしました
Filthy Knight

回答:


193
BOOL isTheObjectThere = [myArray containsObject: @"my string"];

またはそれがどこにあるかを知る必要がある場合

NSUInteger indexOfTheObject = [myArray indexOfObject: @"my string"];

NSArrayドキュメントを読むことを強くお勧めします。質問を投稿する前にそれを行うのが最善です:-)


NSArrayを含む配列があるとしましょう* myArr = [[NSArray alloc] initWithObjects:@ "test1"、@ "test3"、@ "test3"、nil]; 「tes」を検索したかったので、ワイルドカードのstufを機能させたいと思ったので、この質問をしましたが、返信に感謝します
Filthy Knight

ループして各値をテストするか、コレクションオブジェクトの非常に包括的な検索を提供するNSPredicateを調べます。これはSQLのwhere句とほぼ同じくらい強力です。 developer.apple.com/mac/library/documentation/cocoa/Conceptual/...
JeremyP

45

NSPredicateクラスを使用して、文字列の配列内の文字列を検索できます。以下のサンプルコードを参照してください。

NSMutableArray *cars = [NSMutableArray arrayWithObjects:@"Maruthi",@"Hyundai", @"Ford", @"Benz", @"BMW",@"Toyota",nil];

NSString *stringToSearch = @"i";

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains[c] %@",stringToSearch]; // if you need case sensitive search avoid '[c]' in the predicate

NSArray *results = [cars filteredArrayUsingPredicate:predicate];

これは、文字列の配列内の文字列を検索するための最も効率的な方法です


これは小さな配列では問題なく機能しますが、非常に大きな配列(30kレコードを超える)がある場合は、任意のアイデアがあります
amit gupta 2015年

次に、配列を並べ替えたままにし、バイナリ検索(bsearch)を使用して、新しい要素を見つけて挿入します。NSArray / NSMutableArrayには、そのためのメソッドがあります。
spstanley 2017

3
NSMutableArray *cars = [NSMutableArray arrayWithObjects:@"Max",@"Hai", @"Fine", @"Bow", @"Bomb",@"Toy",nil];

NSString *searchText = @"i";
 NSArray *results = [cars filteredArrayUsingPredicate:predicate];

// if you need case sensitive search avoid '[c]' in the predicate

 NSPredicate *resultPredicate = [NSPredicate
                                predicateWithFormat:@"title contains[c] %@",
                                searchText];


searchResults = [cars  filteredArrayUsingPredicate:resultPredicate];

このコードスニペットは質問に答えることができますが、この回答がサイトの将来の訪問者に役立つように、質問にどのように答えるかの説明を含めることをお
勧め

このコードは、単語の配列から単語を見つけるために正常に機能します。
Rahul K Rajan 2014年

最初のテキストでこれを実行したいと思います。つまり、検索テキストはどこからでも最初から一致させる必要があります。助けてください
Gautam Shrivastav
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.