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

В Minecraft, если череп помещен только с именем игрока в качестве значения nbt, клиент загружает данные скина, а не сервер, вы должны использовать для этого mojang api, там вы можете преобразовать имя в UUID, а затем получить текстуру этого UUID

13
задан Gopi 1 September 2010 в 10:54
поделиться

3 ответа

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

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

Вывод:

Country=IND
12
ответ дан 1 December 2019 в 21:23
поделиться
  public static String convertAlpha3ToAlpha2(String alpha3) {
    return Arrays.stream(Locale.getISOCountries())
        .filter(alpha2 -> isCountryCodesEqual(alpha3, alpha2))
        .findFirst().orElseThrow();
  }

  private static boolean isCountryCodesEqual(String alpha3, String alpha2) {
    return alpha3.equalsIgnoreCase(new Locale("", alpha2).getISO3Country());
  }
0
ответ дан 1 December 2019 в 21:23
поделиться

Поскольку вы читаете коды, вы не можете жестко кодировать их, вам лучше создать таблицу поиска для преобразования в коды 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
ответ дан 1 December 2019 в 21:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: