Java-код для преобразования кодов стран альфа-2 (IN) в альфа-3 (IND) - PullRequest
13 голосов
/ 01 сентября 2010

Используя Java, существует ли быстрый способ преобразования кода страны альфа-2 (IN или GB) в эквивалент альфа-3 (IND или GBR)?

Я могу получить коды альфа-2 с помощью:

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

Этоне проблема, на самом деле мое приложение читает в коде альфа-2, но мне нужно вывести эквивалент альфа-3.

Есть ли такой же способ, как выше, для получения кодов альфа-3?

Есть предложения?

Ответы [ 4 ]

11 голосов
/ 01 сентября 2010

Это работает -

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

Вывод:

Country=IND
9 голосов
/ 01 сентября 2010

Да, просто создайте локаль и получите, если из локали:

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

КСТАТИ: getISOLanguages() возвращает коды языков (строчные), getISOCountries() коды возврата стран (прописные)

4 голосов
/ 01 сентября 2010

Поскольку вы читаете коды, вы не можете жестко их кодировать, вам лучше создать таблицу соответствия для преобразования в коды 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 голос
/ 24 февраля 2014

Ответ Гопи работает. НО обратите внимание, что возвращаемые коды представляют собой коды стран ISO 3166, а не коды валют ISO 4217.Они немного отличаются, поэтому используйте с осторожностью

...