Ricerca di stringhe nell'array di stringhe nell'obiettivo c


87

Voglio cercare una stringa specifica nell'array di stringhe nell'obiettivo c. Qualcuno può aiutarmi in questo senso?


Sono i tuoi compiti? Penso che sia facile da fare. Perché solo loop e confronti?
vodkhang

na, non è un compito a casa, avevo bisogno del miglior algoritmo per cercare una stringa specifica che non costava molte risorse in iphone, ecco perché ho posto la domanda
Filthy Knight,

Risposte:


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

o se hai bisogno di sapere dove si trova

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

Consiglio vivamente di leggere la documentazione su NSArray . È meglio farlo prima di pubblicare la tua domanda :-)


diciamo che ho un array contenente NSArray * myArr = [[NSArray alloc] initWithObjects: @ "test1", @ "test3", @ "test3", nil]; volevo cercare "tes" diciamo poi volevo che un jolly funzionasse, che non riuscivo a capire, quindi ho posto questa domanda, ma grazie per la risposta, apprezzata
Filthy Knight

Puoi eseguire il ciclo e testare ogni valore o esaminare NSPredicate che fornisce una ricerca piuttosto completa per gli oggetti della raccolta, potente quasi quanto le clausole SQL where. developer.apple.com/mac/library/documentation/cocoa/Conceptual/…
JeremyP,

45

È possibile utilizzare la classe NSPredicate per cercare stringhe in un array di stringhe. Vedere il codice di esempio di seguito.

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

Questo è il modo più efficiente per cercare stringhe in un array di stringhe


funziona bene per array piccoli, ma se hai un array molto grande (più di 30k record) puoi avere qualche idea
amit gupta

Quindi mantenere la matrice ordinata e utilizzare una ricerca binaria (bsearch) per individuare e inserire nuovi elementi. NSArray / NSMutableArray hanno metodi per questo.
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];

Sebbene questo snippet di codice possa rispondere alla domanda, è meglio includere una spiegazione di come risponde alla domanda in modo che questa risposta sia utile ai futuri visitatori del sito
RobV

Questo pezzo di codice funziona bene per trovare la parola in un array di parole.
Rahul K Rajan

Voglio farlo con il testo iniziale. Voglio dire che il testo di ricerca deve essere abbinato a partire da non da dove. Per favore aiuto
Gautam Shrivastav
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.