如何通过locale从国家/地区名称获取iso2code

时间:2013-11-25 16:51:49

标签: java android locale iso

我有一个用户输入国家/地区名称的表单,然后我必须将其转换为iso2或iso3代码。

怎么可能?我不想使用地图,因为它似乎没有在我的Android应用程序上运行。

此代码用于将iso2转换为实际名称,我想要反过来:

Locale l = new Locale("", "CH");
System.out.println(l.getDisplayCountry());

1 个答案:

答案 0 :(得分:1)

您是否尝试过Locale.getISO3Country()?

要实际进行转换,您可能需要遍历所有可用的区域设置,并查找其getDisplayCountry()与输入国家/地区名称匹配的区域设置。

听起来效率不高(但你说不使用地图),但你可能会尝试这样的事情:

Locale convertCountryNameToIsoCode(String countryName)
    for(Locale l : Locale.getAvailableLocales()) {
        if (l.getDisplayCountry().equals(countryName)) {
            return l;
        }
    }
    return null;
}

http://docs.oracle.com/javase/7/docs/api/java/util/Locale.html#getISO3Country()

但是,如果输入来自Web表单,则将国家/地区代码直接设置为Web表单输入值会更容易。如果输入来自Android原生应用程序,那么我不确定,但我敢打赌你可能会有类似的事情