/ / Objective C La recherche de caractères alphanumériques ne fonctionne pas - ios, objective-c

Objective C La recherche de caractères alphanumériques ne fonctionne pas - ios, objective-c

J'utilise ce code pour vérifier si ma chaîne contient des caractères non alphanumériques:

NSString *initials = @"Å漢";
NSCharacterSet *unwantedCharacters = [[NSCharacterSet alphanumericCharacterSet] invertedSet];
// See if we can find any of the unwanted characters
return [initials rangeOfCharacterFromSet:unwantedCharacters].location == NSNotFound;

Le code retourne vrai. Pourquoi ne peut-il pas trouver les caractères non valides Å et 漢?

Réponses:

1 pour la réponse № 1

De la docs pour alphanumericCharacterSet:

De manière informelle, cet ensemble est l’ensemble des caractères utilisés comme unités de base d’alphabets, de syllabaires, d’idéogrammes et de chiffres.

Les deux personnages que vous avez posté sont en faitcaractères alphanumériques. En fonction de vos commentaires, vous souhaitez le limiter aux lettres et chiffres ASCII, qui est un minuscule sous-ensemble de lettres et de chiffres Unicode. Faites simplement:

NSCharacterSet *lettersAndNumbers = [NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"];
NSCharacterSet *unwantedCharacters = [lettersAndNumbers invertedSet];

-1 pour la réponse № 2

NSNotFound est défini comme étant NSIntegerMax, qui sur un système 64 bits sera 9223372036854775807.