NSCharacterSet *charsToRemove = [NSCharacterSet
characterSetWithCharactersInString:@"example"];
其中example
被替换为要删除的字符。
NSString *finalString = [[originalString
componentsSeperatedByCharactersInCharacterSet: charsToRemove]
componentsJoinedByString: @""];
这会将输入的文本替换为删除了所有字符的文本。
否则,如果你只是要检查,看其是否包含错误的字符,你可以这样做:
NSArray *temp = [originalString componentsSeperatedByCharactersInCharacterSet:
charsToRemove];
if ([temp count] > 1) {
// do stuff
}
NSCharacterSet
有很多常量字符集的共同需求。
NSCharacterSet *charsToKeep = [NSCharacterSet letterCharacterSet];
这将使charsToKeep
只包括字母的字符集。现在你可以使用invertedSet
来得到相反的结果。
NSCharacterSet *charsToRemove = [charsToKeep
invertedSet];
charsToRemove
现在将是一个字符集,包括每一个字符,这不是在letterCharacterSet
。
你可以做到这一切在一个行这样的:
NSCharacterSet *charsToRemove = [[NSCharacterSet letterCharacterSet]
invertedSet];
如果你想要的字母和数字,使用alphanumericCharacterSet
代替letterCharacterSet
。
official documentation有一个所有字符集的列表。
不确定是否有这方面的风格指南信息。更好的行为可能是在输入(shouldChangeCharactersInRange)期间捕获禁止的字符,不要插入它们并给出提醒用户有效字符的警报。 @nhgrif答案在这方面也非常好。更简单,因为你只是测试输入是否在字符集中。 – danh