【问题标题】:How to get currency symbol by currency name?如何通过货币名称获取货币符号?
【发布时间】:2016-03-28 08:16:48
【问题描述】:

我想通过货币名称(如 USDEUR 获取货币符号(如 $£) )。

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

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

如何使用 android 工具按货币名称获取货币符号 -

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

【问题讨论】:

  • 请注意,其他语言中货币符号并不总是放在货币值之前,因此最好将货币值格式化

标签: android currency


【解决方案1】:

你可以试试这样的:

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));
        }

    }
}

【讨论】:

  • @Shevchenko Arthem 你可以试试我的更新,也许这对你的情况来说是更好的解决方案。
  • Currency.getInstance(currency).getSymbol(Locale.getDefault())
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    这对我有用。

    Currency currency = Currency.getInstance("GBP");
    String symbol = currency.getSymbol();
    

    【讨论】:

      【解决方案4】:

      我相信 java.util.currency 是你需要的类,调用 getSymbol 从货币名称中获取符号

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

      【讨论】:

        【解决方案5】:

        我已经解决了这个问题,创建了一个地图,其键是货币代码,值是符号。

        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());
        

        【讨论】:

          【解决方案6】:

          您可以简单地使用此代码来获取货币符号和不同的货币格式。这里变量“curr”将从用户那里获取输入值。然后将其转换为不同的货币格式及其符号。在此我解释了 4 种货币格式。这样您也可以将格式用于其他国家/地区。

          import java.util.*;
          import java.text.*;
          
          public class CurrencyConvertor{
              
              public static void main(String[] args) {
                  Scanner scanner = new Scanner(System.in);
                  double curr = scanner.nextDouble();
                  scanner.close();
                  if(curr>=0 && curr<=1000000000){
           NumberFormat france = NumberFormat.getCurrencyInstance(Locale.FRANCE);
          NumberFormat us = NumberFormat.getCurrencyInstance(Locale.US);
          NumberFormat china = NumberFormat.getCurrencyInstance(Locale.CHINA);
                  NumberFormat india = NumberFormat.getCurrencyInstance(Locale.ENGLISH);
                  
                  
          
          System.out.println("France: " + france.format(curr));
           System.out.println("US: " + us.format(curr));
                   System.out.println("India: "+NumberFormat.getCurrencyInstance(new Locale("en","IN")).format(curr)); 
                   System.out.println("China: "+ china.format(curr));
                  
                  }
              }
          }
          
          
          
          
          
          
          

          【讨论】:

          • 或许你可以解释一下代码的作用
          • 现在我试着解释一下,这样可以吗?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-12-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-03-06
          • 2019-02-23
          相关资源
          最近更新 更多