Pencarian string dalam array string di tujuan c


87

Saya ingin mencari string tertentu dalam array string di tujuan c. Adakah yang bisa membantu saya dalam hal ini?


Apakah ini pekerjaan rumah Anda? Saya pikir itu mudah dilakukan. Mengapa hanya mengulang dan membandingkan?
vodkhang

na, ini bukan pekerjaan rumah, saya membutuhkan algoritma terbaik untuk mencari string tertentu yang tidak menghabiskan banyak sumber daya di iphone, itulah mengapa saya mengajukan pertanyaan
Filthy Knight

Jawaban:


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

atau jika Anda ingin tahu di mana tempatnya

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

Saya sangat menyarankan Anda membaca dokumentasi di NSArray . Sebaiknya lakukan itu sebelum memposting pertanyaan Anda :-)


katakanlah saya memiliki sebuah array yang berisi NSArray * myArr = [[NSArray alokasi] initWithObjects: @ "test1", @ "test3", @ "test3", nil]; saya ingin mencari "tes" katakanlah kemudian saya ingin stuf kartu liar bekerja, yang saya tidak mengerti, jadi saya mengajukan pertanyaan ini, tapi terima kasih atas jawabannya, saya hargai
Filthy Knight

Anda dapat mengulang dan menguji setiap nilai, atau melihat ke NSPredicate yang menyediakan pencarian yang cukup komprehensif untuk objek koleksi - hampir sekuat SQL where klausa. developer.apple.com/mac/library/documentation/cocoa/Conceptual/…
JeremyP

45

Anda dapat menggunakan kelas NSPredicate untuk mencari string dalam array string. Lihat kode contoh di bawah ini.

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];

Ini adalah cara paling efisien untuk mencari string dalam deretan string


ini berfungsi dengan baik untuk array kecil tetapi jika Anda memiliki array yang sangat besar (lebih dari 30k catatan) dapatkah Anda memiliki ide
amit gupta

Kemudian biarkan array tetap diurutkan dan gunakan pencarian biner (bsearch) untuk menemukan dan untuk menyisipkan elemen baru. NSArray / NSMutableArray memiliki metode untuk itu.
spstanley

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];

Meskipun cuplikan kode ini dapat menjawab pertanyaan, lebih baik menyertakan penjelasan tentang bagaimana cuplikan kode tersebut menjawab pertanyaan agar jawaban ini berguna bagi pengunjung situs di masa mendatang
RobV

Potongan kode ini berfungsi dengan baik untuk menemukan kata dalam larik kata.
Rahul K Rajan

Saya ingin melakukan ini dengan teks awal. Maksud saya teks pencarian harus dicocokkan dari awal, bukan dari mana pun. Tolong bantu
Gautam Shrivastav
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.