2010-08-17 5 views
29

J'ai un problème que je n'arrive pas à comprendre.Question de NSString - méthode de rangeOfString

J'essaye d'exécuter la méthode rangeOfString sur une chaîne, et je ne suis pas sûr comment déterminer si la chaîne n'a pas été trouvée. Par exemple:

NSRange range = [@"abc" rangeOfString:@"d" options:NSCaseInsensitiveSearch range:NSMakeRange(0,3)]; 

Clairement, "d" n'est pas contenu dans la chaîne "abc". Je voudrais être en mesure de le faire:

if(the range is empty since "d" is not in "abc") 
    //do something 

Quel est le code pour cela?

Merci!

Répondre

68

D'après la documentation de NSString

-[NSString rangeOfString] 

Valeur de retour

Une structure NSRange donnant l'emplacement et la longueur dans le récepteur de la première occurrence de aString. Renvoie {NSNotFound, 0} si une chaîne est introuvable ou vide (@ "").

il ressemble:

if ([@"abc" rangeOfString:@"d"].location == NSNotFound){ 
    //Do something 

est le moyen approuvé par Apple.

EDIT:

J'ai fait une faute de frappe vraiment mauvais, fixé, merci Kalle.

+2

Vous voulez deux signes égaux là-bas. – Kalle

+0

Cela signifie-t-il que la vérification de la longueur n'est pas «approuvée par Apple»? ;-) –

+0

Je ne sais pas. Et en tout cas, juste parce qu'il n'est pas approuvé par Apple ne le rend pas faux (voir: rejets App Store) –

13

Vérifiez la longueur de la gamme. Si ce n'est pas zéro, il a été trouvé.

+0

A partir des commentaires dans NSString.h: "Ces méthodes renvoient la longueur == 0 si la chaîne cible n'est pas trouvée". Je préfère cette approche, car NSNotFound est un #define NSIntegerMax et sa valeur change en fonction de l'environnement d'exécution (ie 32 vs 64bit) – nobre

+0

Vérifiez que la longueur est meilleure. Dans le cas où le récepteur est nul, la longueur et l'emplacement sont tous les deux retournés à 0. – Dare2Dream

Questions connexes