只是尝试捕获非数字输入 阅读许多项目。尝试decimalDigitCharacterSet(发现很难相信以“decimal”开头的东西不包含小数)。尝试了可变字符集来添加小数。一直在努力将“10.5”与“96”包括在内并仍然排除“abc”。
以下代码生成“IS是一个数字”,无论我放在textbox1
中double whatTheHey;
whatTheHey = _textBox1.text.doubleValue;
if isnan(whatTheHey) {
_textBox2.text = @"NOT a number > ";
}
if (!isnan(whatTheHey)) {
_textBox2.text = @"IS a number > ";
}
10.5,99,qwerty all yield“IS is number”
这似乎只是为了捕获非数字输入而进行的大量工作。
有没有人有任何blatantky简单的工作代码示例来捕获非数字但接受带小数的数字?
答案 0 :(得分:1)
NaN
不字面意思是“任何不是数字的东西”。它是特定值的名称 - 即一个浮点数可以在某些不确定的操作之后具有,例如将零除零或取负数的平方根。有关更多历史记录,请参阅the Wikipedia entry。
要实际解析字符串的数值,您可能需要查看NSNumberFormatter
:
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber *a = [numberFormatter numberFromString:@"10.5"];
NSNumber *b = [numberFormatter numberFromString:@"96"];
NSNumber *c = [numberFormatter numberFromString:@"abc"];
NSLog(@"a: %@, b: %@, c: %@", a, b, c);
收率:
a: 10.5, b: 96, c: (null)
符合您特定标准的更简单(如果不太灵活)的解决方案可能是:
BOOL isNumber(NSString *aString){
return [aString integerValue] || [aString floatValue];
}
但如果你是为iOS(或OS X)写作,你真的应该对NSFormatter
感到满意。它们会让你的生活更轻松。
答案 1 :(得分:0)
试试这个。我认为它应该做你需要的:
- (BOOL)isStringNumeric:(NSString *)input {
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
NSNumber *number = [numberFormatter numberFromString:input];
return (number != nil);
}
答案 2 :(得分:0)
检查字符串是否为数字是否使用以下代码。
NSString *newString = @"11111";
NSNumberFormatter *nf = [NSNumberFormatter new];
BOOL isDecimal = [nf numberFromString:newString] != nil;