Ios 如何在UITextField中不允许使用特殊字符,但允许使用亚洲/中东字符
我使用Ios 如何在UITextField中不允许使用特殊字符,但允许使用亚洲/中东字符,ios,iphone,objective-c,nsstring,Ios,Iphone,Objective C,Nsstring,我使用UITextField供用户输入用户名,并希望限制除句点和下划线以外的特殊字符。我最初开始使用,直到我意识到我不想只限制字母数字字符,还允许使用亚洲和中东语言字符。有没有办法让我做到这一点 谢谢 更新: 根据rmaddy的建议,以下是我目前使用的: - (BOOL)userNameIsAcceptable: (NSString *)userNameInputted { NSCharacterSet *userNameAcceptedInput = [[NSCharacterSet
UITextField
供用户输入用户名,并希望限制除句点和下划线以外的特殊字符。我最初开始使用,直到我意识到我不想只限制字母数字字符,还允许使用亚洲和中东语言字符。有没有办法让我做到这一点
谢谢
更新:
根据rmaddy的建议,以下是我目前使用的:
- (BOOL)userNameIsAcceptable: (NSString *)userNameInputted
{
NSCharacterSet *userNameAcceptedInput = [[NSCharacterSet alphanumericCharacterSet] invertedSet];
NSString *filteredUserName = [[userNameInputted componentsSeparatedByCharactersInSet:userNameAcceptedInput] componentsJoinedByString:@""];
NSLog(@"The filtered result %@", filteredUserName);
return [userNameAcceptedInput isEqual:filteredUserName];
}
使用另一个问题的解决方案,但不是从固定字母构建字符集,而是使用标准的
NSCharacterSet alphanumericCharacterSet
也许可以根据包含所需unicode集的范围在循环中手动测试字符串中的unicode字符?
我做了快速检查,发现除了一些特殊字符外,unicode日文字母集通常都很密集——我在这里查看过,但我想类似的字符也适用于其他语言。谢谢你的建议。我用我正在使用的代码更新了这个问题,但是当我将其设置为
NSCharacterSet alphanumericCharacterSet
时,得到了错误NSInvalidArgumentException',原因:'-[\uu NSCFCharacterSet length]:
并传递了一个字符集(不是字符串)。摆脱外部NSCharacterSet。什么是特殊字符?这是非常模糊的。特殊字符是非字母数字字符,如“!”、“#”、“~”等。因为我的目标是在创建用户名时限制这些特殊字符,所以我认为不明确识别这些特殊字符是什么是可以的。