如何禁止特殊字符但允许在UITextField中使用亚洲/中东字符

时间:2014-02-03 19:31:15

标签: ios iphone objective-c nsstring

我使用UITextField用户输入用户名,并希望限制除句点和下划线之外的特殊字符。我最初开始使用solution from this SO question,直到我意识到我不想仅限于字母数字字符,而且还允许亚洲和中东语言字符。有没有办法让我能够做到这一点?

谢谢!

更新

根据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];
}

2 个答案:

答案 0 :(得分:2)

使用其他问题的解决方案,但不要使用固定字母构建字符集,而是使用标准NSCharacterSet alphanumericCharacterSet

答案 1 :(得分:0)

也许在循环中手动测试字符串中的unicode字符对包含你需要的unicode集的范围? 我做了快速检查,看起来unicode套日语字母通常密集,除了一些特殊字符 - 我看过这里http://www.rikai.com/library/kanjitables/kanji_codes.unicode.shtml但我猜相似也应该对其他语言有效。