/ / Objective C Il controllo dei caratteri alfanumerici non funziona - ios, objective-c

Obiettivo C Il controllo di caratteri alfanumerici non funziona - ios, oggettivo-c

Sto usando questo codice per verificare se la mia stringa contiene caratteri non alfanumerici:

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

Il codice restituisce true. Perché non è in grado di trovare i caratteri non validi Å e 漢?

risposte:

1 per risposta № 1

Dai documenti per alphanumericCharacterSet:

Informalmente, questo set è l'insieme di tutti i caratteri usati come unità di base di alfabeti, sillabari, ideogrammi e cifre.

I due personaggi che hai postato sono di fattocaratteri alfanumerici. In base ai tuoi commenti, vuoi limitarlo a lettere e numeri ASCII che è un minuscolo sottoinsieme di lettere e numeri Unicode. Basta fare:

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

-1 per risposta № 2

NSNotFound è definito come NSIntegerMax, che su un sistema a 64 bit sarà 9223372036854775807.