Подтвердить что ты не робот

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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

Вывод:

Country=IND

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

  public static String convertAlpha3ToAlpha2(String alpha3) {
    return Arrays.stream(Locale.getISOCountries())
        .filter(alpha2 -> isCountriesEqual(alpha3, alpha2))
        .findFirst().orElseThrow();
  }

  private static boolean isCountriesEqual(String alpha3, String alpha2) {
    return alpha3.equalsIgnoreCase(new Locale("", alpha2).getISO3Country());
  }