我有一个用户输入国家/地区名称的表单,然后我必须将其转换为iso2或iso3代码。
怎么可能?我不想使用地图,因为它似乎没有在我的Android应用程序上运行。
此代码用于将iso2转换为实际名称,我想要反过来:
Locale l = new Locale("", "CH");
System.out.println(l.getDisplayCountry());
答案 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原生应用程序,那么我不确定,但我敢打赌你可能会有类似的事情