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

How to check if input is double or string in Objective-C?

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

你怎么绕过这个?


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

更多细节在这里。


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

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

您可能需要调整正则表达式,因为我写了一篇文章。


使用strtod(引用)以'C'方式执行此操作,因为它为您提供了解析的最后一个字符:

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