如何在Objective-C中检查输入是双精度还是字符串?

时间:2012-07-06 14:23:49

标签: objective-c

如何检查给定输入是字符串还是双精度?我尝试了[self.display.text doubleValue]并且如果那不是有效的double,它返回0,但问题是0实际上是实际double的有效输入,所以程序不知道它是否是默认的错误回退或实际的有效输入。

你如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

-[NSFormatter getObjectValue:forString:range:error:]做你想做的事。

更多详情here

答案 1 :(得分:1)

使用strtodreference)进行“C”方式,因为它为您提供了解析的最后一个字符:

NSString *input = @"123.456";
char *endptr;
double value = strtod([input UTF8String], &endptr);
if (*endptr != '\0')
{
    NSLog(@"input is a string");
}

答案 2 :(得分:1)

您可以使用正则表达式和NSPredicate来测试它是否为双精度值。

NSPredicate *predicate;
predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES '^[-+]?[0-9]*\.?[0-9]+$'"];
BOOL result = [predicate evaluateWithObject:@"yourdoublevaluehere"];

你可能需要调整正则表达式,就像我写下来一样。