2

私はフォーマットされた文字列を持っていますUSD 20

に変換したい$20

どうすれば効率的にできますか?正規表現で行う必要がありますが、ロケールが変更されると国の ISOCode も変更されるためです。

4

2 に答える 2

3

必要なものはこれ

      import java.util.Currency; 
      import java.util.Locale;

.

      // create a currency for US locale
      Locale locale = Locale.US;
      Currency curr = Currency.getInstance(locale);

      // get and print the symbol of the currency
      StringBuilder symbol =  new StringBuilder(curr.getSymbol(locale));
      System.out.println("Currency symbol is = " + symbol);

次に、Amount をシンボルに連結します。

この場合、Locale が変更された場合、locale オブジェクトでのみ変更する必要があります。残りのロジックは同じです。

お役に立てれば。

于 2013-08-07T13:09:29.240 に答える
0

これはうまくいくはずです(これは、いくつかString sが宣言され初期化されていることを前提としています):

Currency localCurrForJVM = Currency.getInstance(Locale.getDefault());
String localCurrencySymbol = localCurrForJVM.getSymbol();

s = s.replaceAll("[^0-9.]", ""); 
//using regex to replace all non-numeric, non-decimal characters with ""

s = new StringBuilder(s).insert(0, localCurrencySymbol).toString(); 
//prepends the symbol to the StringBuilder, which replaces s

参考文献:

public static Locale getDefault()

Java 仮想マシンのこのインスタンスのデフォルト ロケールの現在の値を取得します。

Java 仮想マシンは、ホスト環境に基づいて起動時にデフォルトのロケールを設定します。ロケールが明示的に指定されていない場合、多くのロケールに依存するメソッドで使用されます。setDefault メソッドを使用して変更できます。

と:

public static Currency getInstance(Locale locale) 

指定されたロケールの国の Currency インスタンスを返します。ロケールの言語およびバリアント コンポーネントは無視されます。国の通貨が変更されるため、結果は時間の経過とともに変化する可能性があります。たとえば、欧州通貨同盟の元の加盟国の場合、このメソッドは、2001 年 12 月 31 日までの古い国の通貨と、それぞれの国の現地時間である 2002 年 1 月 1 日からのユーロを返します。

パラメータ: locale - Currency インスタンスが必要な国のロケール

戻り値: 指定されたロケールの国の Currency インスタンス、または null

于 2013-08-07T13:21:59.043 に答える