2

たとえば、2 つの文字列に "$100" と "$50" があり、それらを追加して "$150" という出力を得たいとします。一般的な方法(整数に変換して加算する方法)は知っていますが、多くの関数を呼び出さない、より短い方法を探しています。

4

3 に答える 3

3

NSNumberFormatter を使用して文字列をNSNumberに解析し、それらを合計してから String に戻すことができます。

NSString *strNum1 = "$100";
NSString *strNum2 = "$150";

NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterCurrencyStyle];
NSNumber * myFirstNumber = [f numberFromString:strNum1];
NSNumber * mySecNumber = [f numberFromString:strNum2];

NSNumber *sum = [NSNumber numberWithFloat:([myFirstNumber floatValue] + [mySecNumber floatValue])];
NSString * strSum = [f stringFromNumber:sum];
于 2012-06-21T07:35:56.823 に答える
1
float result = [[fiftyBucks substringFromIndex:1] floatValue] + [[hundredBucks substringFromIndex:1] floatValue];

またはNSScannerを使用しますが、少し長くなりますが、より確実/安全になります:

float fifty, hundred, result;
[[NSScaner scannerWithString: fiftyBucks] scanFloat: &fifty];
[[NSScaner scannerWithString: hundredBucks] scanFloat: &hundred];
result = fifty + hundred;
于 2012-06-21T07:27:28.793 に答える
0

代わりに CGfloat に価格を保存した方がよいと思います。

文字列「$100」を表示するのがフロントエンド タスクで、価格の合計を計算するのがバックエンド タスクです。この 2 つは分離する必要があります。

価格を CGFloat として保存すると、簡単に計算できます。そして、その文字列を表示したい場合は、メソッドを実装します。

- (NSString *)priceLabel:(CGFloat) _price {
     return [NSString stringWithFormat: @"$.1f", _price];
}

さらに、コーディング時にフロントエンド ヘルパー モデルを作成することを恐れないでください。このようなマイナーなメソッドはすべて、クラス メソッドとしてこのモデルに入れました。このメソッドを再利用する必要がある場合は、モデルをインポートするだけです。

于 2012-06-21T07:58:09.920 に答える