Recherche de chaînes dans un tableau de chaînes dans l'objectif c


87

Je souhaite rechercher une chaîne spécifique dans le tableau de chaînes de l'objectif c. Quelqu'un peut-il m'aider à cet égard?


Est-ce vos devoirs? Je pense que c'est facile à faire. Pourquoi simplement boucler et comparer?
vodkhang

na, ce ne sont pas des devoirs, j'avais besoin du meilleur algorithme pour rechercher une chaîne spécifique qui ne coûte pas beaucoup de ressources dans l'iphone, c'est pourquoi je pose la question
Filthy Knight

Réponses:


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

ou si vous avez besoin de savoir où il se trouve

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

Je vous recommande fortement de lire la documentation sur NSArray . Il est préférable de le faire avant de poster votre question :-)


disons que j'ai un tableau contenant NSArray * myArr = [[NSArray alloc] initWithObjects: @ "test1", @ "test3", @ "test3", nil]; Je voulais rechercher "tes" disons alors que je voulais qu'un stuf joker fonctionne, que je ne pouvais pas comprendre, alors j'ai posé cette question, mais merci pour la réponse, apprécié
Filthy Knight

Vous pouvez soit parcourir et tester chaque valeur, soit consulter NSPredicate qui fournit une recherche assez complète d'objets de collection - presque aussi puissante que les clauses where SQL. developer.apple.com/mac/library/documentation/cocoa/Conceptual/…
JeremyP

45

Vous pouvez utiliser la classe NSPredicate pour rechercher des chaînes dans un tableau de chaînes. Consultez l'exemple de code ci-dessous.

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

C'est le moyen le plus efficace pour rechercher des chaînes dans un tableau de chaînes


cela fonctionne bien pour un petit tableau, mais si vous avez un très grand tableau (plus de 30k enregistrements), vous pouvez avoir une idée
amit gupta

Ensuite, gardez le tableau trié et utilisez une recherche binaire (bsearch) pour localiser et insérer de nouveaux éléments. NSArray / NSMutableArray ont des méthodes pour cela.
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];

Bien que cet extrait de code puisse répondre à la question, il est préférable d'inclure une explication de la façon dont il répond à la question afin que cette réponse soit utile aux futurs visiteurs du site
RobV

Ce morceau de code fonctionne très bien pour trouver le mot dans un tableau de mots.
Rahul K Rajan

Je veux faire cela avec le texte initial. Je veux dire que le texte de recherche doit être comparé à partir de n'importe où. S'il vous plaît aider
Gautam Shrivastav
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.