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 № 1Dai 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.