1

现在我正在尝试在我的应用程序上添加前端检查,以检测用户是否在文本字段中仅输入数字。

我用:

- (IBAction)checkID:(UITextField *)sender {
if ([sender.text isEqualToString:@""]) {
    sender.text = @"This information is required";
    sender.backgroundColor =[UIColor redColor];
}else if (![sender.text intValue]) {
    sender.text = [sender.text stringByAppendingString:@" is not valid number"];
    sender.backgroundColor =[UIColor redColor];
}
NSLog(@"send.text is %@, intValue is %d",sender.text,[sender.text intValue]);

}

但是我发现它的文本以数字开头并以字符串结尾,它的 intValue 仍然是数字。在我的文本中,文本是“00001aa”,但 intValue 是 1。

有没有其他方法可以过滤掉这个“00001aa”文本?

提前致谢。

4

1 回答 1

0

是的,您可以使用NSRegularExpression, 或NSCharacterSet(适用于正数)。

对于正则表达式,使用^[-+]?[0-9]+$.

NSRegularExpression *numEx = [NSRegularExpression
    regularExpressionWithPattern:@"^[-+]?[0-9]+$" options:0 error:nil
];
NSLog(@"%ld", [numEx numberOfMatchesInString:@"-200" options:0 range:NSMakeRange(0, 4)]);
NSLog(@"%ld", [numEx numberOfMatchesInString:@"001A" options:0 range:NSMakeRange(0, 4)]);

对于字符集,使用[NSCharacterSet decimalDigitCharacterSet].

BOOL isNum = [[NSCharacterSet decimalDigitCharacterSet]
    isSupersetOfSet:[NSCharacterSet characterSetWithCharactersInString:@"001AA"]
];
于 2012-08-29T03:26:20.843 回答