2010-09-01 8 views
12

Utilizzo di Java, C'è un modo rapido per convertire un codice paese alpha-2 (IN o GB) nell'equivalente alpha-3 (IND o GBR)?Codice Java per convertire i codici paese alpha-2 (IN) in alpha 3 (IND)

posso ottenere i codici alfa-2 con:

String [] codici = java.util.Locale.getISOLanguages ​​();

Questo non è un problema, in realtà la mia applicazione legge nel codice alpha-2, ma ho bisogno di produrre l'equivalente alpha-3.

Esiste un modo simile come sopra per ottenere l'alfa-3 codici?

Qualche suggerimento?

risposta

10

questo funziona -

Locale locale = new Locale("en","IN"); 
    System.out.println("Country=" + locale.getISO3Country()); 

uscita:

Country=IND 
+0

Questo è grande, come posso anzichè in una variabile che contiene il nuovo codice del paese di volta in volta, e mi darà di nuovo il codice 3 char corrispondente per ogni paese. locale locale = new Locale ("it", mycode); La lingua sarà tutta inglese, ma non mi interessa il linguaggio. – Mbg

7

Sì, semplice creare un Locale e ottenere, se dalla locale:

String alpha3Country = new Locale("en", alpha2County).getISO3Country(); 

BTW: getISOLanguages() rendimenti lingua codici (minuscolo), getISOCountries() codici nazionali di ritorno (maiuscolo)

+0

Questo è grande, come posso anzichè in una variabile che contiene il nuovo codice del paese di volta in volta, e che mi darà di nuovo il codice 3 char corrispondente per ogni paese. La lingua sarà tutta inglese, ma non mi interessa il linguaggio. – Mbg

+0

In una nota a margine, è possibile fare equivalentemente 'new Locale (" ", alpha2County) .getISO3Country()'. Specificare qui la lingua inglese è irrilevante. – Jonik

+0

BTW errato: i codici paese sono MAIUSCOLE, i codici lingua minuscoli. – JN01

4

Dal momento che si legge nei codici, non si può hardcode li invece necessario creare una tabella di ricerca per convertire in codici ISO.

public static void main(String[] args) { 
     // setup 
     Locale[] availableLocales = Locale.getAvailableLocales(); 
     HashMap<String, String> map = new HashMap<String, String>(); 
     for (Locale l : availableLocales) { 
      map.put(l.getCountry(), l.getISO3Country()); 
     } 
     // usage 
     System.out.println(map.get("IN")); 
     System.out.println(map.get("GB")); 
    } 
1

La risposta di Gopi funziona. MA prendere atto che i codici restituiti sono i codici ISO 3166 paese e non le ISO 4217 codici di valuta. Questi differiscono leggermente in modo da utilizzare con cautela

+1

Per favore, prova a leggere questo http://stackoverflow.com/about, per avere più comprensione su domande/risposte qui su SO. Il tuo contributo non risponde alla domanda. È più un commento, che puoi aggiungere quando aumenterai la tua reputazione: http://stackoverflow.com/faq#reputation –

Problemi correlati