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 à str1.equalsIgnoreCase(str2)
Réponses
Trop de publicités?if( [@"Some String" caseInsensitiveCompare:@"some string"] == NSOrderedSame ) {
// strings are equal except for possibly case
}
La documentation est situé à la Recherche et les Méthodes de Comparaison
NSString *stringA;
NSString *stringB;
if (stringA && [stringA caseInsensitiveCompare:stringB] == NSOrderedSame) {
// match
}
Remarque: stringA &&
est requis car lorsque l' stringA
est nil
:
stringA = nil;
[stringA caseInsensitiveCompare:stringB] // return 0
et justement, NSOrderedSame
est également définie comme 0
.
L'exemple suivant est un exemple typique piège:
NSString *rank = [[NSUserDefaults standardUserDefaults] stringForKey:@"Rank"];
if ([rank caseInsensitiveCompare:@"MANAGER"] == NSOrderedSame) {
// what happens if "Rank" is not found in standardUserDefaults
}
Vous pouvez toujours vous assurer qu'ils sont dans le même cas avant la comparaison:
if ([[stringX uppercaseString] isEqualToString:[stringY uppercaseString]]) {
// They're equal
}
Le principal avantage é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'une de l' 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).