21

文字列から通貨値を取得するために NSNumberFormatter を使用していますが、うまく機能します。

これを行うには、次のコードを使用します。

NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
    [nf setNumberStyle:NSNumberFormatterCurrencyStyle];
    NSString *price = [nf stringFromNumber:[NSNumber numberWithFloat:[textField.text floatValue]]];

ただし、文字列の先頭に常に通貨記号が表示されます。指定された文字列から手動で行うのではなく、フォーマッタで文字列に通貨記号を与えないようにすることはできますか?

4

4 に答える 4

65

はい、スタイルを設定した後、特定の側面を微調整できます。

NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
[nf setNumberStyle:NSNumberFormatterCurrencyStyle];
[nf setCurrencySymbol:@""]; // <-- this
NSDecimalNumber* number = [NSDecimalNumber decimalNumberWithString:[textField text]];
NSString *price = [nf stringFromNumber:number];

いくつかのアドバイスとして、特にユーザーが文字列値を入力している場合 (コードで提案されているように)、おそらく数値フォーマッタを使用して文字列値を読み取る必要があります。この場合、ユーザーがロケール固有の書式設定テキストを入力すると、ジェネリックメソッド-floatValue-doubleValueタイプ メソッドは切り捨てられた数値を返しません。また、-doubleValue通貨であるユーザーが入力したテキストから浮動小数点数に変換するために使用する必要があります。これについては、国際化に関する WWDC'12 開発者セッション ビデオに詳しい情報があります。

編集:NSDecimalNumberユーザーが入力する番号を表すために、コード例で an を使用しました。まだ適切な検証を行っていませんが、元のコードよりは優れています。ありがとう@マーク

于 2012-09-20T23:47:40.867 に答える