将国家代码alpha-2(IN)转换为alpha 3(IND)的Java代码

Mbg*_*Mbg 13 java locale country-codes

使用Java,有没有一种快速的方法将alpha-2国家代码(IN或GB)转换为alpha-3等价物(IND或GBR)?

我可以得到alpha-2代码:

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

这不是问题,实际上我的应用程序读取alpha-2代码,但我需要输出alpha-3等价物.

是否有类似的方式来获得alpha-3代码?

有什么建议?

Gop*_*opi 12

这工作 -

    Locale locale = new Locale("en","IN");
    System.out.println("Country=" + locale.getISO3Country());
Run Code Online (Sandbox Code Playgroud)

输出:

Country=IND
Run Code Online (Sandbox Code Playgroud)


Arn*_*ter 9

是的,简单的创建一个语言环境,并从现场得到,如果:

String alpha3Country = new Locale("en", alpha2County).getISO3Country();
Run Code Online (Sandbox Code Playgroud)

BTW:getISOLanguages()返回语言代码(小写),getISOCountries()返回国家代码(大写)


sta*_*ker 5

由于您读取了代码,因此无法对它们进行硬编码,您应该创建一个查找表来转换为 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" ) );
    }
Run Code Online (Sandbox Code Playgroud)