2016-09-22 68 views
0

我有一个允许用户输入数字的UITextField iOS应用程序。我如何确保用户输入的值是有效数字(整数或十进制)。以下是我已经尽力了,但由于某种原因,它不会为十进制数的工作:如果我输入一个十进制数,如435.634,上面的代码在控制台日志返回“无效号码”检查NSString是否为有效数字 - 整数或十进制数字

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

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

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

。我不明白为什么这不起作用,因为我正在使用decimalDigitCharacterSet

+0

使用'NSNumberFormatter',以正确处理特定于区域的数字。 – rmaddy

+0

'decimalDigitCharacterSet'集合包含数字,不包含任何标点符号。 – rmaddy

+0

@Supertecnoboff - 另一种选择是向用户显示数字键盘。不需要担心其他事情 - https://www.cocoacontrols.com/search?q=numeric –

回答

1

感谢@rmaddy帮助我出去,这里是我使用的解决方案的情况下,任何人有兴趣:

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

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

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

如果数字是整数或小数这样,即使工作。它也适用于不同的区域设置的十进制字符,如,

+1

谢谢。节省了我的时间。 – HongchaoZhang

相关问题