检查 NSString 是否为有效数字 - 整数或小数
Check if NSString is valid number - whole or decimal number
我有一个带有 UITextField
的 iOS 应用程序,允许用户输入数字。我如何确保用户输入的值是有效数字(整数或十进制)。这是我尝试过的方法,但由于某些原因它不适用于十进制数:
NSCharacterSet *notDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
if ([numString rangeOfCharacterFromSet:notDigits].location == NSNotFound) {
NSLog(@"valid number");
}
else {
NSLog(@"invalid number");
}
如果我输入一个十进制数比如435.634,上面的代码returns "invalid number"在控制台日志中。我不明白为什么这不起作用,因为我正在使用 decimalDigitCharacterSet
?
感谢@rmaddy 帮助我,这是我正在使用的解决方案,以防有人感兴趣:
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
NSNumber *myNumber = [formatter numberFromString:inputNumString];
if (myNumber != nil) {
NSLog(@"valid number");
}
else {
NSLog(@"invalid number");
}
即使数字是整数或小数,这也有效。它还适用于不同的语言环境十进制字符,例如 ,
我有一个带有 UITextField
的 iOS 应用程序,允许用户输入数字。我如何确保用户输入的值是有效数字(整数或十进制)。这是我尝试过的方法,但由于某些原因它不适用于十进制数:
NSCharacterSet *notDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
if ([numString rangeOfCharacterFromSet:notDigits].location == NSNotFound) {
NSLog(@"valid number");
}
else {
NSLog(@"invalid number");
}
如果我输入一个十进制数比如435.634,上面的代码returns "invalid number"在控制台日志中。我不明白为什么这不起作用,因为我正在使用 decimalDigitCharacterSet
?
感谢@rmaddy 帮助我,这是我正在使用的解决方案,以防有人感兴趣:
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
NSNumber *myNumber = [formatter numberFromString:inputNumString];
if (myNumber != nil) {
NSLog(@"valid number");
}
else {
NSLog(@"invalid number");
}
即使数字是整数或小数,这也有效。它还适用于不同的语言环境十进制字符,例如 ,