当前位置: 首页 > 面试题库 >

没有获得特定语言环境的货币符号

许亦
2023-03-14
问题内容

我正在尝试根据语言环境获取货币符号。但是,它不是返回符号,而是返回代码。我有一个摘要:

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

public class CurrencyFormat
{
  public void displayCurrencySymbols() 
  {
   Currency currency = Currency.getInstance(Locale.US); 
   System.out.println("United States: " + currency.getSymbol());
  } 
  public static void main(String[] args)
  {
    new CurrencyFormat().displayCurrencySymbols();
  }
}

对于 Locale.US, 它给出了符号,$但是如果我替换

Currency currency = Currency.getInstance(Locale.US);

Currency currency = Currency.getInstance(Locale.GERMANY);

然后,用符号代替国家代码。为什么会这样以及如何获取符号?

编辑: 在寻找了一些答案之后,我想清除一下,设置一些特定的默认本地不是解决方案,因为 我需要一次显示所有可用的符号

例如

 Locale.setDefault(Locale.UK);

会给我欧元符号,但对于美元,它将给出代码,而不是美元符号($)。


问题答案:

您好,请尝试以下代码

import java.text.NumberFormat;
import java.util.Comparator;
import java.util.Currency;
import java.util.Locale;
import java.util.SortedMap;
import java.util.TreeMap;

public class CurrencyExample
{
    public static void main(String[] args) 
    {
         Utils.getCurrencySymbol( Currency.getInstance(Locale.US).getCurrencyCode());
         Utils.getCurrencySymbol(Currency.getInstance(Locale.JAPAN).getCurrencyCode());
         Utils.getCurrencySymbol(Currency.getInstance(Locale.UK).getCurrencyCode());
         Utils.getCurrencySymbol("INR");
    }
}

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

上面程序的输出是这样的:

USD:-$
JPY:-¥
GBP:-£
INR:-Rs.


 类似资料:
  • 问题内容: 我正在使用我给定的语言环境获取自定义货币格式。但是,这始终包含我不需要的货币符号,我只想要给定语言环境的正确货币数字格式而没有货币符号。 做一个抛出一个异常.. 问题答案: 以下作品。这有点丑陋,但可以履行合同: 您还可以从货币格式中获取模式,删除货币符号,然后从新模式中重构新格式:

  • 问题内容: 我用来将货币从BigDecimal格式化为字符串。按预期工作,问题在于我们的主要目标是荷兰市场,而默认的荷兰格式很奇怪。 让我解释一下,当格式化-125时,荷兰语将得到“€125-”(预期为“-€125”)。英国按预期方式提供“-£125.50”。 我可以检查语言环境是否为荷兰语,然后在每次我要设置小数格式时都提供一个模式。但是我更喜欢一个解决方案,它可以覆盖荷兰的格式设置。我在考虑以

  • 问题内容: 我正在竭尽全力找到一种使用Java在各种语言环境中格式化外币的方法,这些语言不是默认设置。我发现了java.util.Currency,它可以表示用于各种语言环境的正确符号。也就是说,对于美元,它在美国为我提供了美元符号,在其他国家为我提供了美元或美元的符号。另外,我还找到了java.text.NumberFormat,它将为特定语言环境格式化货币。我的问题- util.Currenc

  • 确定当前给定区域设置的短日期格式的最佳方法是什么? 例如,如果我的脚本的语言环境设置为荷兰语,我希望以某种方式获得该特定语言环境中使用的短日期格式,它将是: 年月日 如果设置为American,我希望获得美国地区的日期格式: 年月日 等等

  • 问题内容: 我不知道如何在了解i18n语言环境的基础上,如何对“ float-string”解析为浮点数,而不是对该字符串做任何假设。 例如:德国人像我一样,写“ 1.234,87”,而美国人写“ 1,234.87”。在我的项目中,我确实知道我希望使用哪种语言环境,但是我不想“硬编码”关于该本地语言如何编写这些内容的假设。 我不喜欢做regexp / stringreplacements。 有没有

  • 让我们从一段简单的代码开始,用格式化货币: 打印:。 如果你想格式化货币,这是可以的。 但是我想做的是为给定的货币ISO 4217代码(例如JPY)获得货币符号(例如¥)。 我的第一个猜测是尝试使用: 但这为构造函数(en_US)中给定的区域设置提供了货币符号,在我的例子中是$。 有没有办法通过PHP中的货币ISO 4217代码获得货币符号?