Quelqu'un peut-il m'indiquer des ressources sur la comparaison insensible à la casse dans l'objectif C? Il ne semble pas avoir de méthode équivalente pourstr1.equalsIgnoreCase(str2)
ios
objective-c
cocoa-touch
nsstring
Tejaswi Yerukalapudi
la source
la source
@"Some String"
est reçu de tout autre appel et se trouve êtrenil
, votreif
donneratrue
l'envoicaseInsensitiveCompare
ànil
est valide et donne lieu à un autrenil
qui, dans notre cas, par rapport àNSOrderedSame
renverratrue
(NSOrderedSame
est défini comme 0). Cela peut être une source de bugs assez dévastateurs, comme ce fut le cas dans mon cas. À votre santé!NSString
laquelle renvoie un booléen. Ensuite, si la chaîne de réception estnil
, la méthode dans son ensemble retourneNO
.Remarque:
stringA &&
est obligatoire car quandstringA
estnil
:et ainsi se produit
NSOrderedSame
est également défini comme0
.L'exemple suivant est un piège typique:
la source
Une alternative si vous voulez plus de contrôle que la simple insensibilité à la casse est:
La recherche numérique et l'insensibilité diacritique sont deux options pratiques.
la source
if ([someString compare:otherString options:NSCaseInsensitiveSearch] && someString.length > 0 && someString != (id)[NSNull null])
Vous pouvez toujours vous assurer qu'ils sont dans le même cas avant la comparaison:
Le principal avantage étant que vous évitez le problème potentiel décrit par matm concernant la comparaison de chaînes nulles. Vous pouvez soit vérifier que la chaîne n'est pas nulle avant de faire l'une des
compare:options:
méthodes, soit être paresseux (comme moi) et ignorer le coût supplémentaire de création d'une nouvelle chaîne pour chaque comparaison (ce qui est minime si vous n'en faites qu'une ou deux comparaisons).la source
caseInsensitiveCompare
), utilisez toujours cela.la source
Une nouvelle façon de procéder. iOS 8
la source
true
pour "Café" et "É", ce n'est certainement pas une bonne réponse.Essayez cette méthode
la source
Conversion de la réponse de Jason Coco à Swift pour les profondément paresseux :)
la source
vérifier avec le préfixe comme dans l'iPhone ContactApp
ce blog m'a été utile
la source
Solution alternative pour swift:
Pour créer UpperCase:
par exemple:
ou pour rendre les deux LowerCase:
par exemple:
la source
Sur macOS, vous pouvez simplement utiliser
-[NSString isCaseInsensitiveLike:]
ce qui revientBOOL
comme-isEqual:
.la source
la source