对南非货币使用 "R" 而不是 "ZAR"
Use "R" instead of "ZAR" for South African Currency
当区域设置为南非时,如何使用 "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);
所有这些都完成后,我将 ZAR 替换为 R using.replace();
构建您自己的 NumberFormat
class(扩展 Java),并实现您自己的 format
版本;为 ZAR
.
以外的所有货币调用基础 class 函数
您当前采用的方法往往会导致大量重复(且未封装)代码。
好的,我找到了一个很好的例子:
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
NumberFormat
class 根据作为参数传递的语言环境格式化数字。如果区域设置适用于南非 (new Locale("en", "ZA")
),则该数字将正确显示:R 12,345.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);
当区域设置为南非时,如何使用 "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);
所有这些都完成后,我将 ZAR 替换为 R using.replace();
构建您自己的 NumberFormat
class(扩展 Java),并实现您自己的 format
版本;为 ZAR
.
您当前采用的方法往往会导致大量重复(且未封装)代码。
好的,我找到了一个很好的例子:
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
NumberFormat
class 根据作为参数传递的语言环境格式化数字。如果区域设置适用于南非 (new Locale("en", "ZA")
),则该数字将正确显示:R 12,345.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);