有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java对南非货币使用“R”而不是“ZAR”

当地区设置为南非时,如何使用“R”表示货币

现在它显示“ZAR”,我需要它显示“R”

我试过:

final Currency curr = Currency.getInstance("ZAR");
final NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.getDefault());
nf.setCurrency(curr);
final String value = nf.format(12345.67);

一旦所有这些都完成了,我用R代替了ZAR。替换()


共 (3) 个答案

  1. # 1 楼答案

    NumberFormat类根据作为参数传递的区域设置来格式化数字。如果语言环境是南非(new Locale("en", "ZA")),则数字将正确显示:R 12345.67

    final Currency curr = Currency.getInstance("ZAR");
    final NumberFormat nf = NumberFormat.getCurrencyInstance(new Locale("en", "ZA"));
    nf.setCurrency(curr);
    final String value = nf.format(12345.67);
    System.out.println(value);
    
  2. # 2 楼答案

    我发现了一个很好的例子:

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

    从这里:Not getting currency symbols for specific Locale

  3. # 3 楼答案

    构建自己的NumberFormat类(扩展Java的),并实现自己的format版本;为除ZAR之外的所有货币调用基类函数

    您当前采用的方法往往会导致大量重复(和未封装)的代码