2010-09-01 3 views
12

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

можно получить альфа-2 коды с:

String [] = java.util.Locale.getISOLanguages ​​коды();

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

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

Любые предложения?

ответ

10

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

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

Выход:

Country=IND 
+0

Это замечательно, так как я могу каждый раз менять переменную, содержащую новый код страны, и он вернет мне соответствующий 3-х символьный код для каждой страны. Язык локали = новый язык («en», myCode); Язык все будет английский, но меня не интересует язык. – Mbg

7

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

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

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

+0

Это замечательно, так как я могу каждый раз менять переменную, содержащую новый код страны, и он вернет мне соответствующий 3-х символьный код для каждой страны. Язык все будет английский, но меня не интересует язык. – Mbg

+0

На боковой ноте вы можете, эквивалентно, выполнять «новый язык (« », alpha2County) .getISO3Country()'. Указание английского языка здесь не имеет значения. – Jonik

+0

Faulty BTW: коды стран - это UPPERCASE, коды языков в нижнем регистре. – JN01

4

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

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

+1

Пожалуйста, попробуйте прочитать это http://stackoverflow.com/about, чтобы узнать больше о вопросах/ответах здесь, на SO. Ваш вклад не отвечает на этот вопрос. Это скорее комментарий, который вы можете добавить, как только вы увеличите свою репутацию: http://stackoverflow.com/faq#reputation –