ios - 检查NSString是有效数字-整数还是十进制数字

标签 ios objective-c validation numbers nscharacterset

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

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

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

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

如果输入十进制数字(例如435.634),则上面的代码在控制台日志中返回“无效数字”。我不明白为什么在使用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");
}

即使数字是整数或十进制,这也将起作用。它还适用于不同的区域设置十进制字符,例如,

关于ios - 检查NSString是有效数字-整数还是十进制数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39649074/

相关文章:

.net - 错误模板显示在其他控件之上,而本应隐藏它

php - javascript 空字段验证

iphone - tumblr iphone 集成

c# - 如何在不同平台创建相同的 MD5 token ?

ios - 通过命令行从 iOS 设备卸载应用程序

ios - 带有按钮和选择器的协议(protocol)扩展

objective-c - 如何使用 Google Maps API 搜索地点和邮政编码?

objective-c - 检测全屏菜单栏移动

循环中每个项目的 javascript onblur 函数

ios - 如何停止 unity ARKIT session ?