我有一个字符串,它只需要是a-z,0-9和_
我如何检查输入是否有效?我试过这个,但它接受字母,如Å,ä,ö,øetc.
NSString *string = [NSString stringWithString:nameField.text];
NSCharacterSet *alphaSet = [NSCharacterSet alphanumericCharacterSet];
[string stringByTrimmingCharactersInSet:alphaSet];
[string stringByReplacingOccurrencesOfString:@"_" withString:@""];
BOOL valid = [[string stringByTrimmingCharactersInSet:alphaSet] isEqualToString:@""];
8条答案
按热度按时间wz8daaqr1#
可以创建自己的角色集:
一旦你有了它,你就把它反转成你原来的字符串中没有的所有东西:
然后,你可以使用一个字符串方法来查找你的字符串是否包含倒排集合中的任何内容:
pgccezyw2#
可以使用 predicate :
**编辑:**我没有注意到您正在使用
[NSString stringWithString:nameField.text]
。请改用
nameField.text
。a8jjtwal3#
更简单的方法,
它将字母数字和_下划线组合在一起。
你可以这样使用它
PS.示例从@DaveDeLong示例中复制:)
ncgqoxb04#
使用
[NSCharacterSet characterSetWithCharactersInString:]
创建您自己的字符集,然后像之前那样进行修剪,看看返回的字符串是否有长度值。或者可以使用
invertedSet
删除所有未设置的字符,如果这有助于生成一个干净的字符串的话。4xy9mtcn5#
你可以遍历字符串中的每个字符,检查它是否是字母数字:
tmb3ates6#
下面是在Swift中如何执行此操作(作为String类的扩展):
qacovj5a7#
正在更新Swift 5的@vikzilla答案:
c9qzyr3d8#
这是一个快速帮助器,如果它有帮助的话