1

我有一个 iOS 应用程序,UITextField它允许用户输入数字。如何确保用户输入的值是有效数字(整数或小数)。这是我尝试过的,但由于某种原因,它不适用于十进制数:

NSCharacterSet *notDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];

if ([numString rangeOfCharacterFromSet:notDigits].location == NSNotFound) {
    NSLog(@"valid number");
}

else {
    NSLog(@"invalid number");
}

如果我输入一个十进制数字,例如 435.634,上面的代码会在控制台日志中返回“无效数字”。我不明白为什么这在我使用时不起作用decimalDigitCharacterSet

4

1 回答 1

3

感谢@rmaddy 帮助我,这是我正在使用的解决方案,以防有人感兴趣:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
NSNumber *myNumber = [formatter numberFromString:inputNumString];

if (myNumber != nil) {
    NSLog(@"valid number");
}

else {
    NSLog(@"invalid number");
}

即使数字是整数或小数,这也将起作用。它也适用于不同的语言环境十进制字符,例如,

于 2016-09-22T21:40:29.630 回答