Comparaison de la casse NSString
Quelqu'un peut-il m'indiquer toutes les ressources sur la comparaison de la casse en Objective-C? Il ne semble pas avoir une méthode équivalente pour str1.equalsIgnoreCase(str2)
Vous devez vous connecter pour publier un commentaire.
La documentation est situé au De recherche et les Méthodes de Comparaison
@"Some String"
est reçu à partir de n'importe quel autre appel et se trouve êtrenil
, votreif
donneratrue
que l'envoi decaseInsensitiveCompare
ànil
est valide et les résultats dans un autrenil
qui, dans notre cas, en comparaison avecNSOrderedSame
sera de retourtrue
(NSOrderedSame
est défini à 0). Cela peut être une source d'assez dévastatrice de bugs, comme il était dans mon cas. Cheers!NSString
qui retourne un booléen. Ensuite, si la chaîne de réception estnil
, la méthode dans son ensemble renvoieNO
.Remarque:
stringA &&
est nécessaire parce que quandstringA
estnil
:et se trouve
NSOrderedSame
est également définie comme la0
.L'exemple suivant est un exemple typique écueil:
Une alternative si vous voulez plus de contrôle que de simplement compte de la casse est:
Numérique de recherche et de signes diacritiques insensibilité sont deux options pratiques.
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:
L'avantage principal étant de vous éviter le problème décrit par matm concernant la comparaison néant cordes. Vous pouvez soit cocher la chaîne n'est pas nul avant de faire l'un des
compare:options:
méthodes, ou vous pourriez être paresseux (comme moi) et d'ignorer le coût de la création d'une nouvelle chaîne pour chaque comparaison (qui est minime si vous êtes seulement un ou deux comparaisons).caseInsensitiveCompare
), toujours l'utiliser.Une nouvelle façon de le faire. iOS 8
true
pour "Café" et "É", ce n'est certainement est PAS une réponse correcte.Essayer cette méthode
La conversion de Jason Coco, la réponse à Swift pour la profondément paresseux 🙂
de vérifier avec le préfixe comme dans l'iPhone ContactApp
cette blog a été utile pour moi
Solution alternative pour l'swift:
À faire à la fois des Majuscules:
e.g:
ou de faire à la fois des Minuscules:
e.g:
Sur macOS, vous pouvez simplement utiliser
-[NSString isCaseInsensitiveLike:]
, qui renvoieBOOL
comme-isEqual:
.