首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSCharacterSet:如何在alphanumericCharacterSet文本限制中添加"_“?

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

Stack Overflow用户
提问于 2010-05-05 01:49:55
回答 3查看 25.4K关注 0票数 55

构建一个NSCharacter集,以限制UITextField输入用户名。我希望用户也能够输入下划线(因此A-Za-z0-9_),但alphanumericCharacterSet不包括它。有没有办法以简短的形式指定这样的范围?我看到了+ (id)characterSetWithRange:(NSRange)aRange,但我并不真正理解它是如何工作的。

我有一个简单的UITextField子类,我将字符集传递给它。该限制运行良好,不允许用户输入字母数字以外的任何内容。只需在这些额度上加上"_“即可。

代码语言:javascript
复制
NSCharacterSet *characterSet = [NSCharacterSet alphanumericCharacterSet];
[textField setAllowed:characterSet];
[textField setFrame:frame];
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-05 01:59:18

Objective-C

代码语言:javascript
复制
NSMutableCharacterSet *_alnum = [NSMutableCharacterSet characterSetWithCharactersInString:@"_"];
[_alnum formUnionWithCharacterSet:[NSCharacterSet alphanumericCharacterSet]];

Swift

代码语言:javascript
复制
let _alnum = NSMutableCharacterSet(charactersIn: "_")
_alnum.formUnion(with: .alphanumerics)
票数 122
EN

Stack Overflow用户

发布于 2012-03-15 13:05:46

另一种方法是将其设置为可变并添加它。

Objective-C

代码语言:javascript
复制
NSMutableCharacterSet *characterSet = [NSMutableCharacterSet alphanumericCharacterSet];
[characterSet addCharactersInString:@"_"];

Swift

代码语言:javascript
复制
let characterSet = NSMutableCharacterSet.alphanumeric()
characterSet.addCharacters(in: "_")

您可以使用以下命令验证它是否已添加(在游乐场中):

代码语言:javascript
复制
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
票数 28
EN

Stack Overflow用户

发布于 2015-01-14 05:37:36

代码语言:javascript
复制
- (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);  

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2767675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档