/ / Завдання C Перевірка буквено-цифрових символів не працює - ios, object-c

Завдання C Перевірка алфавітно-цифрових символів не працює - ios, objective-c

Я використовую цей код, щоб перевірити, чи містить мій рядок якісь не буквено-цифрові символи:

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

Код повертає справжнє. Чому він не в змозі знайти недійсні символи Å і 漢?

Відповіді:

1 для відповіді № 1

З документів для alphanumericCharacterSet:

Неофіційно цей набір - це набір усіх символів, що використовуються як основні одиниці алфавітів, навчальних програм, ідеографів та цифр.

Два написаних вами персонажі є насправдібуквено-цифрові символи. Виходячи з ваших коментарів, ви хочете обмежити це літерами та цифрами ASCII, що є крихітним набором букв і цифр Unicode. Просто робіть:

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

-1 для відповіді № 2

NSNotFound визначається як NSIntegerMax, який у 64-бітовій системі буде 9223372036854775807.