构建一个NSCharacter集,以限制UITextField输入用户名。我希望用户也能够输入下划线(因此A-Za-z0-9_),但alphanumericCharacterSet不包括它。有没有办法以简短的形式指定这样的范围?我看到了+ (id)characterSetWithRange:(NSRange)aRange,但我并不真正理解它是如何工作的。
我有一个简单的UITextField子类,我将字符集传递给它。该限制运行良好,不允许用户输入字母数字以外的任何内容。只需在这些额度上加上"_“即可。
NSCharacterSet *characterSet = [NSCharacterSet alphanumericCharacterSet];
[textField setAllowed:characterSet];
[textField setFrame:frame];发布于 2010-05-05 01:59:18
Objective-C
NSMutableCharacterSet *_alnum = [NSMutableCharacterSet characterSetWithCharactersInString:@"_"];
[_alnum formUnionWithCharacterSet:[NSCharacterSet alphanumericCharacterSet]];Swift
let _alnum = NSMutableCharacterSet(charactersIn: "_")
_alnum.formUnion(with: .alphanumerics)发布于 2012-03-15 13:05:46
另一种方法是将其设置为可变并添加它。
Objective-C
NSMutableCharacterSet *characterSet = [NSMutableCharacterSet alphanumericCharacterSet];
[characterSet addCharactersInString:@"_"];Swift
let characterSet = NSMutableCharacterSet.alphanumeric()
characterSet.addCharacters(in: "_")您可以使用以下命令验证它是否已添加(在游乐场中):
characterSet.characterIsMember(UInt16(Character("^").unicodeScalars.first!.value)) // false
characterSet.characterIsMember(UInt16(Character("_").unicodeScalars.first!.value)) // true -- YAY!
characterSet.characterIsMember(UInt16(Character("`").unicodeScalars.first!.value)) // false发布于 2015-01-14 05:37:36
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSCharacterSet *blockedCharacters = [[NSCharacterSet whitespaceCharacterSet] invertedSet];
NSCharacterSet *blockedCharacters2 = [[NSCharacterSet letterCharacterSet] invertedSet];
return ([string rangeOfCharacterFromSet:blockedCharacters].location == NSNotFound || [string rangeOfCharacterFromSet:blockedCharacters2].location);
}https://stackoverflow.com/questions/2767675
复制相似问题