Wyszukiwanie ciągów w tablicy ciągów w celu c


87

Chcę wyszukać określony ciąg w tablicy ciągów w celu c. Czy ktoś może mi w tym pomóc?


Czy to twoja praca domowa? Myślę, że to łatwe. Dlaczego po prostu zapętlać i porównywać?
vodkhang

na, to nie praca domowa, potrzebowałem najlepszego algorytmu do wyszukania określonego ciągu, który nie kosztuje dużo zasobów w iPhonie, dlatego zadałem pytanie
Filthy Knight

Odpowiedzi:


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

lub jeśli chcesz wiedzieć, gdzie to jest

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

Gorąco polecam przeczytanie dokumentacji na NSArray . Najlepiej zrobić to przed wysłaniem pytania :-)


powiedzmy, że mam tablicę zawierającą NSArray * myArr = [[NSArrayocation] initWithObjects: @ "test1", @ "test3", @ "test3", nil]; chciałem wyszukać "tes", powiedzmy, że chciałem zadziałać stuf z dziką kartą, którego nie mogłem zrozumieć, więc zadałem to pytanie, ale dziękuję za odpowiedź, doceniam
Filthy Knight

Albo przechodzisz przez pętlę i testujesz każdą wartość, albo przeglądasz NSPredicate, który zapewnia dość wszechstronne wyszukiwanie obiektów kolekcji - prawie tak potężne jak klauzule SQL where. developer.apple.com/mac/library/documentation/cocoa/Conceptual/…
JeremyP

45

Możesz użyć klasy NSPredicate do wyszukiwania ciągów w tablicy ciągów. Zobacz poniższy przykładowy kod.

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

Jest to najbardziej efektywny sposób wyszukiwania ciągów w tablicy ciągów


działa to dobrze dla małych tablic, ale jeśli masz bardzo dużą tablicę (ponad 30 000 rekordów), możesz mieć jakiś pomysł
amit gupta

Następnie zachowaj posortowaną tablicę i użyj wyszukiwania binarnego (bsearch) do lokalizowania i wstawiania nowych elementów. NSArray / NSMutableArray mają do tego metody.
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];

Chociaż ten fragment kodu może odpowiedzieć na pytanie, lepiej jest dołączyć wyjaśnienie, w jaki sposób odpowiada na pytanie, aby ta odpowiedź była przydatna dla przyszłych odwiedzających witrynę
RobV

Ten fragment kodu działa dobrze, aby znaleźć słowo w tablicy słów.
Rahul K Rajan

Chcę to zrobić z początkowym tekstem. Mam na myśli, że szukany tekst musi być dopasowany od początku, a nie z dowolnego miejsca. Proszę o pomoc
Gautam Shrivastav
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.