我使用此代码检查我的字符串是否包含任何非字母数字字符:
NSString *initials = @"Å漢";
NSCharacterSet *unwantedCharacters = [[NSCharacterSet alphanumericCharacterSet] invertedSet];
// See if we can find any of the unwanted characters
return [initials rangeOfCharacterFromSet:unwantedCharacters].location == NSNotFound;
代码返回true。为什么无法找到无效字符Å和汉?
答案 0 :(得分:1)
来自alphanumericCharacterSet
的文档:
非正式地说,这个集合是用作字母,音节,表意文字和数字的基本单位的所有字符的集合。
您发布的两个字符实际上是字母数字字符。根据您的评论,您希望将其限制为ASCII字母和数字,这是Unicode字母和数字的一小部分。只需:
NSCharacterSet *lettersAndNumbers = [NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"];
NSCharacterSet *unwantedCharacters = [lettersAndNumbers invertedSet];
答案 1 :(得分:-1)
NSNotFound定义为NSIntegerMax,在64位系统上将为9223372036854775807.