java - 如何通过区域设置从国家/地区名称获取 iso2code

标签 java android locale iso

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

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

此代码用于将 iso2 转换为实际名称,我想要相反的方式:

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

最佳答案

您尝试过 Locale.getISO3Country() 吗?

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

这听起来效率不高(但你说过不要使用 map ),但你可以尝试类似的方法:

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()

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

关于java - 如何通过区域设置从国家/地区名称获取 iso2code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20198644/

相关文章:

java - 泛型和 instanceof - java

java - 如何从具有多个相同字段值的类的值中获取字段名称

Android 开发生命周期结束的应用程序

android - 单行 TextView 剪切 LinearLayout 内的文本

android - Locale 返回没有国家代码的语言环境

java - OpenEntityManagerInViewFilter批注配置

java - 在 Java Maven 项目中通过 Spark 查询 Cassandra 中的数据

安卓。没有可用的 SD 卡

java - 为不同的语言环境定制 java.text 格式化程序

java - 如何从 Java 语言环境的时区获取日期模式