Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在UITextField中不允许使用特殊字符,但允许使用亚洲/中东字符_Ios_Iphone_Objective C_Nsstring - Fatal编程技术网

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。什么是特殊字符?这是非常模糊的。特殊字符是非字母数字字符,如“!”、“#”、“~”等。因为我的目标是在创建用户名时限制这些特殊字符,所以我认为不明确识别这些特殊字符是什么是可以的。