iOS6无法检查仅包含字母数字字符的字符串
我使用此代码检查iOS6中的用户输入字符串是否仅包含字母数字字符:iOS6无法检查仅包含字母数字字符的字符串,ios,objective-c,string,unicode,Ios,Objective C,String,Unicode,我使用此代码检查iOS6中的用户输入字符串是否仅包含字母数字字符: NSCharacterSet *alphaSet = [NSCharacterSet alphanumericCharacterSet]; NSString *trimmedString = [text stringByTrimmingCharactersInSet:alphaSet]; BOOL valid = [trimmedString isEqualToString:@""]; 但运行这段代码的结果如下: 请注意,文
NSCharacterSet *alphaSet = [NSCharacterSet alphanumericCharacterSet];
NSString *trimmedString = [text stringByTrimmingCharactersInSet:alphaSet];
BOOL valid = [trimmedString isEqualToString:@""];
但运行这段代码的结果如下:
请注意,文本
(要检查的字符串)仅包含中文字符,但经过字母集
修剪后,它将成为空字符串并通过验证
我也尝试过此代码,但它也不起作用:
- (BOOL) isAlphaNumeric: (NSString *) text
{
NSCharacterSet *unwantedCharacters =
[[NSCharacterSet alphanumericCharacterSet] invertedSet];
return ([text rangeOfCharacterFromSet:unwantedCharacters].location == NSNotFound) ? YES : NO;
}
我不知道我哪里做错了。在检查之前,是否需要对输入文本进行编码
目前,我直接从iOS6的-(BOOL)textView:(UITextView*)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString*)text
的最后一个replacementText
参数获取字符串
谢谢 问题在于
字母数字字符集
似乎也包含中文字母,因此结果是“正确的”。苹果公司并没有这样记录,但我看到一些帖子(比如GNUStep)似乎表明了这一点。(还请注意,Apple确实记录了此集合包含您可能不想要的字符:非正式地说,此集合是用作字母表、音节、表意文字和数字基本单位的所有字符的集合。)
一个简单但不雅观的解决方法是自己定义字符集,如果您只需要英文字母表,而不需要任何外来字母,如Ü
或ß
:
NSCharacterSet *alphaSet = [NSCharacterSet characterSetWithCharactersInString:@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890"];
当您将iOS>=7作为目标时,可能会对其中一个URL*AllowedCharacterSet
感兴趣。有关详细信息,请参阅