1

フォーマット文字列(「mm / dd / yyy」など)を指定して時間ストリングをフォーマットするのと同じように、ICUライブラリを使用して通貨ストリングをカスタムフォーマットすることは可能ですか。

そのため、特定のロケール(たとえばUSD)に対して、必要に応じて、すべての通貨文字列を「xxx.00$USD」に戻すことができます。

4

3 に答える 3

1

http://icu-project.org/apiref/icu4c/classDecimalFormat.htmlを参照してください。

具体的には:http://icu-project.org/apiref/icu4c/classDecimalFormat.html#aadc21eab2ef6252f25eada5440e3c65

パターン構文については、http://icu-project.org/apiref/icu4c/classDecimalFormat.html#_detailsを参照してください。

私はこれを使用しませんでしたが、ICUの知識からこれが方向性です。

ただし、以下を使用することをお勧めします。

http://icu-project.org/apiref/icu4c/classNumberFormat.htmlcreateCurrencyInstancememberを使用してから、 setMaximumIngegerDigitsまたはその他の関数を使用して、必要なものを作成します。これにより、よりローカライズされます。文化については何も想定しないでください。「10,000USD」は、小数部の分離に「、」が使用されている一部の国では「$10」と誤解される可能性があるためです。

ので注意してください。

于 2009-12-28T07:20:18.037 に答える
1

通貨インスタンスを作成して、それをDecimalFormatにキャストしても安全かどうかを確認できます

if (((const NumberFormat*)fmt)->getDynamicClassID() == DecimalFormat::getStaticClassID()) 
  {   const DecimalFormat* df = (const DecimalFormat*) fmt; ...

…次に、applyPatternを呼び出すことができます。「特殊パターン文字」の¤、¤¤、¤¤¤に関する情報を参照してください。

于 2010-07-01T22:11:07.160 に答える
0

ICUライブラリのcreateCurrencyInstance()を使用します。

于 2009-12-21T18:55:06.520 に答える