2016-03-28 9 views
24

Ich möchte Währungssymbol (wie $ oder £) nach Währungen Name (wie USD oder EUR).Wie erhält man Währungssymbol nach Währungsname?

für Englisch (US) I-Symbol bekommen kann (wenn Englisch (US) als Sprache auf dem Gerät eingestellt):

Currency currency = Currency.getInstance(Locale.getDefault()); 
String symbol = currency.getSymbol()); // $ 

Wie kann ich Symbol für Währung durch Devisennamen Android Tools bekommen -

someMethod (String currCode) { // currCode - USD, EUR, UAH 
    return currSymbol;  // $... 
} 
+6

zur Kenntnis, dass das Währungssymbol nicht immer vor dem in anderen Sprachen Geldwert setzt in ist, so ist es besser, den Wert der Währung –

Antwort

20

Sie können einige wie diese versuchen:

public class MainActivity extends AppCompatActivity { 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Utils.getCurrencySymbol(Currency.getInstance(Locale.US).getCurrencyCode()); 
     Utils.getCurrencySymbol(Currency.getInstance(Locale.JAPAN).getCurrencyCode()); 
     Utils.getCurrencySymbol(Currency.getInstance(Locale.UK).getCurrencyCode()); 

     //for your case that you want to get Euro symbol because France are with Euro symnol  
     Utils.getCurrencySymbol(Currency.getInstance(Locale.FRANCE).getCurrencyCode()); 
     //you can get symbol also if you write string of your desired currency 
     Utils.getCurrencySymbol("INR"); 


    } 


    static class Utils { 
     public static SortedMap<Currency, Locale> currencyLocaleMap; 

     static { 
      currencyLocaleMap = new TreeMap<Currency, Locale>(new Comparator<Currency>() { 
       public int compare(Currency c1, Currency c2) { 
        return c1.getCurrencyCode().compareTo(c2.getCurrencyCode()); 
       } 
      }); 
      for (Locale locale : Locale.getAvailableLocales()) { 
       try { 
        Currency currency = Currency.getInstance(locale); 
        currencyLocaleMap.put(currency, locale); 
       } catch (Exception e) { 
       } 
      } 
     } 


     public static String getCurrencySymbol(String currencyCode) { 
      Currency currency = Currency.getInstance(currencyCode); 
      System.out.println(currencyCode + ":-" + currency.getSymbol(currencyLocaleMap.get(currency))); 
      return currency.getSymbol(currencyLocaleMap.get(currency)); 
     } 

    } 
} 
+2

@Shevchenko Arthem zu formatieren, können Sie versuchen, meine Update vielleicht dies eine bessere Lösung für Ihren Fall ist. –

3

Ich habe dieses Problem gelöst, um eine Karte zu erstellen, die den Schlüssel hat, ist der Währungscode und der Wert ist das Symbol.

public final Map<String, String> CURRENCIES= new HashMap<String, String>(){ 
     { 
      put("EUR","€"); 
      put("USD","$"); 
      ... 
     } 
}; 

Dann können Sie das Symbol mithilfe von Locale, wie folgt erhalten.

Currency currency = Currency.getInstance(Locale.getDefault()); 
String symbol = CURRENCIES.get(currency.getCurrencyCode()); 
9

Währungssymbol hängt vom Standort ab. Das gleiche $ -Zeichen bedeutet unterschiedliche Währungen in den USA und Australien. Um das richtige Symbol zu erhalten, müssen Sie die Gebietsschema-Instanz angeben. Andernfalls wird ein Standardgebietsschema angewendet, das zu unterschiedlichen Werten für verschiedene Geräte führt.

Locale uk = new Locale("en", "GB"); 
    Currency pound = Currency.getInstance("GBP"); 
    pound.getSymbol(uk); 
Verwandte Themen