2010-03-30 6 views
13

Ich möchte das Währungsformat von Indien erhalten, also brauche ich ein Locale Objekt für Indien. Aber es gibt nur wenige Länder, die eine Locale Konstante haben (a static final Locale), und Indien ist keiner von ihnen.Erhalten Sie das Währungsformat für ein Land, das keine Gebietsschema-Konstante hat

Um die Währungssymbole für die USA und Großbritannien zu bekommen, ich folgendes tun:

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

} 

, die verwendet die Konstanten Locale.US und Locale.UK. Wenn ich das indische Währungsformat bekommen möchte, was kann ich tun?

+0

@Thilo: Wie kann ich es implementieren? – Venkat

+0

@Thilo: Es funktioniert gut. Vielen Dank. – Venkat

+0

@Venkats: Setzen Sie diesen Kommentar unter seine Antwort, oder er wird es nicht sehen. –

Antwort

14

Entsprechend der JDK release notes haben Sie Locale Codes hi_IN (Hindi) und en_IN (Englisch).

System.out.println(Currency.getInstance(new Locale("hi", "IN")).getSymbol()); 
+0

@Thilo: Es funktioniert gut. Vielen Dank .. – Venkat

+0

Der Schlüssel ist, dass 1) Die 'Locale'-Klasse ist keine Sammlung von konstanten Werten; Es hat auch Konstruktoren. 2) Alles was es ist, ist eine Kennung für ein Gebietsschema; Die eigentliche Arbeit wird in 'Currency.getInstance()' erledigt. – Raedwald

0

Hier ist ein Dienstprogramm Methode das Symbol zu haben, was auch immer Ihre locale ist

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


    } 
9

heres einfache Sache ist u

, tun können
float amount = 100000; 

    NumberFormat formatter = NumberFormat.getCurrencyInstance(new Locale("en", "IN")); 

    String moneyString = formatter.format(amount); 

    System.out.println(moneyString); 

Die Ausgabe wird sein, Rs.100.000.00.

+0

Ich habe es getestet. Das funktioniert gut. – sebadagostino

+0

Es funktioniert gut. Aber ich bevorzuge Rupie-Symbol anstelle von Rs. Jede schnelle Abhilfe? – Anand

Verwandte Themen