目标C检查字母数字字符不起作用

时间:2015-02-12 19:45:05

标签: 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;

代码返回true。为什么无法找到无效字符Å和汉?

2 个答案:

答案 0 :(得分:1)

来自alphanumericCharacterSet的文档:

  

非正式地说,这个集合是用作字母,音节,表意文字和数字的基本单位的所有字符的集合。

您发布的两个字符实际上是字母数字字符。根据您的评论,您希望将其限制为ASCII字母和数字,这是Unicode字母和数字的一小部分。只需:

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

答案 1 :(得分:-1)

NSNotFound定义为NSIntegerMax,在64位系统上将为9223372036854775807.