/ Cieľ C Kontrola alfanumerických znakov nefunguje - ios, objective-c

Cieľ C Kontrola alfanumerických znakov nefunguje - ios, objective-c

Tento kód používam na skontrolovanie, či môj reťazec obsahuje nealfanumerické znaky:

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

Kód vráti hodnotu true. Prečo nie je možné nájsť neplatné znaky Å a 漢?

odpovede:

1 pre odpoveď č. 1

Z dokumentov pre alphanumericCharacterSet:

Neformálne je táto sada množina všetkých znakov používaných ako základné jednotky abecedy, syllabary, ideogramy a číslice.

Dva znaky, ktoré ste vyslali, sú v skutočnostialfanumerických znakov. Na základe vašich komentárov ho chcete obmedziť na písmená a čísla ASCII, čo je malá podmnožina písmen a čísiel Unicode. Jednoducho to:

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

-1 pre odpoveď č. 2

NSNotFound je definovaný ako NSIntegerMax, ktorý na 64 bitovom systéme bude 9223372036854775807.