如何通过货币名称获取货币符号?

问题描述:

我希望得到的货币符号(如$£)的货币名称(如美元EUR)。如何通过货币名称获取货币符号?

对于英语(美国),我可以得到符号(如英语(美国)设置为对设备语言):

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

如何可以使用Android的工具,我得到符号货币通过货币名称 -

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

注意,货币符号是不是总是把在其他语言中的货币价值之前,所以最好格式化币值 –

您可以尝试这样的:

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你可以试试我的更新也许这是你的情况下更好的解决方案。 –

我相信java.util.Currency中的是你需要的类,叫getSymbol摆脱货币名称

http://developer.android.com/reference/java/util/Currency.html

符号

我已经解决了这个问题,创建一个具有关键字的Map是货币代码,值是符号。

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

然后,您可以通过使用Locale来获得符号,就像这样。

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

货币符号取决于所在的位置。同一美元符号表示美国和澳大利亚的货币不同。因此,要获得正确的符号,您必须提供Locale实例。否则,将应用默认区域设置,这将导致不同设备的值不同。

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