3

所以我想转换NSString成双倍。我找到了以下示例:

NSString * s = @"1.5e5";
NSLog(@"%lf", [s doubleValue]);

它可以工作,但如果doubleValue不能将字符串转换为双精度,它只会返回 0.0,这不是我需要的。我需要一些方法来尝试将双精度的字符串表示形式转换为双精度,并以某种方式指示它是否无法转换。c#有一个绝妙的方法

double d;
boolean Double.TryParse(str, out d)

Objective C中是否有与上述方法类似的方法?或者最好使用正则表达式?但是,我真的不知道该怎么做。

4

1 回答 1

9

您可以使用NSScanner该类:

NSString *s = @"1.5e5";
NSScanner *scanner = [NSScanner scannerWithString:s];
double d;
BOOL success = [scanner scanDouble:&d];

如果要确保已扫描整个字符串(数字后没有多余的字符),请使用

BOOL isAtEnd = [scanner isAtEnd];
于 2012-10-12T19:48:30.343 回答