我正在尝试根据语言环境获取货币符号。但是,它不是返回符号,而是返回代码。我有一个摘要:
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代码获得货币符号?