NSCharacterSet:如何在alphanumericCharacterSet文本限制中添加"_"?

typ*_*ror 55 iphone objective-c nscharacterset

构建NSCharacter集以限制UITextField以输入用户名.我希望用户也能输入下划线(所以[A-Za-z0-9_]),但alphanumericCharacterSet不包括它.有没有办法在短格式中指定类似的范围?我明白了+ (id)characterSetWithRange:(NSRange)aRange,但我真的不明白这是怎么回事.

我有一个简单的UITextField子类,我将字符集传递给.限制工作正常,并且不允许用户输入除字母数字之外的任何内容.只需要在这些限额中加上"_".

NSCharacterSet *characterSet = [NSCharacterSet alphanumericCharacterSet];
[textField setAllowed:characterSet];
[textField setFrame:frame];
Run Code Online (Sandbox Code Playgroud)

dra*_*ard 120

Objective-C的

NSMutableCharacterSet *_alnum = [NSMutableCharacterSet characterSetWithCharactersInString:@"_"];
[_alnum formUnionWithCharacterSet:[NSCharacterSet alphanumericCharacterSet]];
Run Code Online (Sandbox Code Playgroud)

迅速

let _alnum = NSMutableCharacterSet(charactersIn: "_")
_alnum.formUnion(with: .alphanumerics)
Run Code Online (Sandbox Code Playgroud)

  • +1我最喜欢的是关于Cocoa,我每天都会发现新的东西.这对我来说是新的,但这正是做到这一点的正确方法.很棒的发现! (5认同)
  • 确实.优雅而有效.谢谢,抽奖. (2认同)

Rus*_*ert 28

另一种方法是使其变为可变并添加它.

NSMutableCharacterSet *characterSet = [NSMutableCharacterSet alphanumericCharacterSet];
[characterSet addCharactersInString:@"_"];
Run Code Online (Sandbox Code Playgroud)