2012-05-11 15 views
1

私は市販のサードパーティ製ライブラリを使用しています。これは、画面に表示される数値の書式設定を非常に制限しています。Objective-C printf/NSStringのような書式設定stringWithFormat

整形は唯一あなたが例えば各シリーズのlabelFormatStringと呼ばれる文字列を、カスタマイズすることが可能で行うことができます。

donutSeries.labelFormatString = @"$%.02f"; 

だけprintf/NSString stringWithFormatのように。

そしてもちろん

は今、私の要件は、上記の文字列のみを使用してこれを達成する場合は可能です私が代わりに私は彼らに $123,456,789

を表示する必要が表示$123456789であることの を把握することはできません1つの最終微調整を課しますと何もしていない(no NSNumberFormaterなど)。常に

おかげ

ジェイソン

答えて

-1

This is what you are looking for 新しいものを尋ねる前に、古いSO質問をチェックすることをお勧め。

+0

そして、常に適切に質問を読むことをお勧めします。彼は具体的には、(たとえそれが悪い考えのように見えるとしても)数値フォーマッタを使わずに解決策を求めています... – Alladinian

+0

あなたが送るリンクはNSNumberFormaterを示唆しています、私はNSNumberFormaterがオプションではないこと、私のアプリ全体にフォーマッターをつけて、ここで使うことができたらすでに完了しています。あなたは年老いた人の質問をチェックすることをお勧めします。回答する前に質問を読むことをお勧めします。 –

+0

@Alladinianは同意しました – zahreelay

-1

NSNumberFormatterクラスを見て、それを使って達成できると思います。

NSNumberFormatter *formatter = [NSNumberFormatter new]; 
[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; // this line is important! 

NSString *formatted = [formatter stringFromNumber:[NSNumber numberWithInteger:2000000]] 

[formatter release]; 
+2

と私はあなたが私の質問を読んでいないと信じて...私はフレームワークも私を許可していないので、この場合NSNumberFormaterを使用することはできません。 –

2

@zahreelay彼は書式を使用しないと、彼はそれらを使用できないと言った。書式設定はロケールやその他のものに依存し、obj-c文字列の書式設定はprintfの書式指定仕様とまったく同じではないため、私はそれができないと思います。

setlocale(LC_ALL, ""); 
unsigned int x = 12345u; 
printf("%'8u\n", x); //prints 12,345 

しかし残念ながら、これは元のためのNSLogでは動作しません。でも、あなたには、いくつかのロケールを設定する必要が千の分離作業を行うためのprintfと。 (ちょうどそれをテストした)

+0

はい、Apple独自のドキュメント([here](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html))には、IEEE仕様(ここでは( http://pubs.opengroup.org/onlinepubs/009695399/functions/printf.html))、私はこの問題がバグ報告を正当化すると思います。 – Monolo

+1

実際、この例の魔法は 'setlocale'関数とフォーマッタの** '**シンボルを呼び出しています。このシンボルはIEEE規格のISO C標準への拡張としてマークされているため、Appleが省略している可能性は非常に高いですこれらの拡張機能を実装し、それらのフォーマッタを実装しました... – graver