Swift中如何通过ISO双字母国家代码获取大洲名称
根据ISO双字母国家代码获取大洲名称的解决方案
你提到的Locale.Region的continent属性仅返回BCP 47标识符(如"NA"代表北美洲),无法直接得到可读的大洲名称,以下是两种实用解决方法:
方法一:维护自定义国家-大洲映射表
自己构建一份ISO双字母国家代码到大洲名称的映射关系,这种方式简单直接,无需依赖外部资源,适合业务场景固定的需求。
示例代码(以Java为例):
import java.util.HashMap; import java.util.Map; public class ContinentMapper { private static final Map<String, String> COUNTRY_CONTINENT_MAP = new HashMap<>(); static { // 初始化常见国家与大洲的映射,可按需补充更多条目 COUNTRY_CONTINENT_MAP.put("US", "北美洲"); COUNTRY_CONTINENT_MAP.put("CN", "亚洲"); COUNTRY_CONTINENT_MAP.put("FR", "欧洲"); COUNTRY_CONTINENT_MAP.put("ZA", "非洲"); COUNTRY_CONTINENT_MAP.put("AU", "大洋洲"); COUNTRY_CONTINENT_MAP.put("BR", "南美洲"); } public static String getContinentName(String countryCode) { return COUNTRY_CONTINENT_MAP.getOrDefault(countryCode.toUpperCase(), "未知"); } }
优势:无外部依赖,响应速度快;缺点:需手动维护映射表,覆盖全量国家需要较多初始化工作。
方法二:通过Locale本地化资源获取大洲名称
利用continent属性返回的BCP 47标识符创建Locale实例,再调用本地化名称方法获取可读的大洲名称,无需手动维护映射。
示例代码(以Java为例):
import java.util.Locale; public class ContinentNameFetcher { public static String getContinentName(String countryCode) { Locale.Region countryRegion = Locale.Region.of(countryCode); Locale.Region continentRegion = countryRegion.continent(); if (continentRegion == null) { return "未知"; } // 获取默认语言环境下的大洲名称,也可指定语言如Locale.CHINESE return continentRegion.getDisplayName(); } }
优势:无需手动维护映射,自动适配本地化语言;缺点:部分区域的本地化资源可能缺失,需提前测试覆盖范围。
内容的提问来源于stack exchange,提问作者lazarevzubov
相关产品推荐
相关产品推荐

