Ответ 1
В соответствии с примечаниями к выпуску JDK, у вас есть коды языка hi_IN (хинди) и en_IN (английский).
System.out.println(Currency.getInstance(new Locale("hi", "IN")).getSymbol());
Я хочу получить формат валюты Индии, поэтому мне нужен объект Locale
для Индии. Но существует лишь несколько стран, которые имеют константу Locale
(a static final Locale
), а Индия не является одним из них.
Чтобы получить символы валюты для США и Великобритании, я могу сделать следующее:
public void displayCurrencySymbols() {
Currency currency = Currency.getInstance(Locale.US);
System.out.println("United States: " + currency.getSymbol());
currency = Currency.getInstance(Locale.UK);
System.out.println("United Kingdom: " + currency.getSymbol());
}
Это использует константы Locale.US
и Locale.UK
. Если я хочу получить индийский формат валюты, что я могу сделать?
В соответствии с примечаниями к выпуску JDK, у вас есть коды языка hi_IN (хинди) и en_IN (английский).
System.out.println(Currency.getInstance(new Locale("hi", "IN")).getSymbol());
heres - простая вещь, которую вы можете сделать,
float amount = 100000;
NumberFormat formatter = NumberFormat.getCurrencyInstance(new Locale("en", "IN"));
String moneyString = formatter.format(amount);
System.out.println(moneyString);
Выход будет, Rs.100,000.00.
смотрите здесь http://java.sun.com/j2se/1.4.2/docs/guide/intl/locale.doc.html и есть хинди Индия hi_IN
Вот утилита, чтобы иметь символ, независимо от вашей локали
public class Utils {
public static SortedMap<Currency, Locale> currencyLocaleMap;
static {
currencyLocaleMap = new TreeMap<Currency, Locale>(new Comparator<Currency>() {
@Override
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);
return currency.getSymbol(currencyLocaleMap.get(currency));
}
public static String getAmountAsFormattedString(Double amount, Double decimals, String currencyCode) {
Currency currency = Currency.getInstance(currencyCode);
double doubleBalance = 0.00;
if (amount != null) {
doubleBalance = ((Double) amount) / (Math.pow(10.0, decimals));
}
NumberFormat numberFormat = NumberFormat.getCurrencyInstance(currencyLocaleMap.get(currency));
return numberFormat.format(doubleBalance);
}
}