3

だから私は二重に変換したいNSString。次の例を見つけました。

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

それは機能しますがdoubleValue、文字列を double に変換できない場合は、必要なものではない 0.0 を返すだけです。double の文字列表現を double に変換しようとするメソッドが必要で、変換できない場合は何らかの形で示す必要があります。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 に答える