10

Java でトルコ リラ (ISO 4217 通貨コード TRY) で価格を印刷しようとしています。

私がする時

Currency curr = Currency.getInstance("TRY");
Locale trLocale = new Locale("tr", "TR");
System.out.println(curr.getSymbol(trLocale));

出力は「YTL」です。

ただし、最近、トルコ リラの通貨記号が「YTL」から「TL」に変更されました (トルコ リラのウィキペディア ページで確認できます)。でフォーマットするとNumberFormat、同様の結果が得られます。

特にJavaにビルトインがある場合は特に、これ以上通貨クラスを書きたくありません。

TRY の Java のデフォルトの通貨記号を「TL」にオーバーライドする方法はありますか?

4

4 に答える 4

7

さらに参照するための復活:

DecimalFormatSymbols を使用して、書式設定のために通貨を変更できます

Locale trLocale = new Locale("tr", "TR");
DecimalFormat decimalFormat = (DecimalFormat) DecimalFormat.getCurrencyInstance(trLocale);
DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance(trLocale);
dfs.setCurrencySymbol("TL");
decimalFormat.setDecimalFormatSymbols(dfs);

または、SPI にアピールして通貨記号をプラグインすることもできます (たとえば、独自の国のバリアントを作成することによってnew Locale("tr","TR","try"))。そのためには、java.util.spi.CurrencyNameProviderJava 拡張メカニズムに実装を提供して登録する必要があります。http://java.sun.com/javase/6/docs/api/java/util/spi/LocaleServiceProvider.htmlを確認してください。

于 2010-05-21T05:02:59.420 に答える
3

面白いことに、ウィキペディアによると、通貨コード "TRL" は廃止されています (トルコ リラの古いコード)。最新の jdk (1.5.0_10) にアップグレードしていませんが、

Currency curr = Currency.getInstance("TRL");
Locale trLocale = new Locale("tr", "TR");
System.out.println(curr.getSymbol(trLocale));

版画:

TL

したがって、既存のコードを廃止されたコードにマップし、必要に応じて調整およびテストする独自のコードを作成することもできます。

于 2009-05-21T18:45:48.887 に答える
2

Java 7では、プロパティファイルの通貨を上書きできます。ISO-4217シンボルに依存している場合は、そこで指定/オーバーライドできます。

于 2009-05-21T18:30:59.803 に答える
0

Java を待っている間は、次のようにします。

System.out.println(curr.getSymbol(trLocale).substring(1));
于 2009-05-21T18:35:54.630 に答える