首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从CultureInfo获得RegionInfo.TwoLetterISORegionName

从CultureInfo获得RegionInfo.TwoLetterISORegionName
EN

Stack Overflow用户
提问于 2018-05-24 10:05:55
回答 1查看 705关注 0票数 0

在db中,我已经存储了带有RegionInfo.TwoLetterISORegionName值的值。我有比利时的“be”、“no”、“gb”、“en”等价值观。

如果我写:

代码语言:javascript
复制
var culture = new CultureInfo("be");

我不是比利时,而是白俄罗斯。

因此,我需要一个从CultureInfo获得RegionInfo.TwoLetterISORegionName的方法。

EN

回答 1

Stack Overflow用户

发布于 2018-05-25 06:31:55

给定两个字母的区域名称,有多种文化可以与该区域名称相关联(因为在一个国家可以使用多种语言)。例如,瑞士有4种文化: de、fr、it、rm。

现在有一些代码:

代码语言:javascript
复制
public static ILookup<string, CultureInfo> RegionToCultures()
{
    // All the local cultures
    CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);

    // We "group" the cultures by their TwoLetterISORegionName
    return cultures.ToLookup(x => new RegionInfo(x.LCID).TwoLetterISORegionName);
}

代码返回一个ILookup<string, CultureInfo> (认为它是一个IDictionary<string, IEnumerable<CultureInfo>>)。

用它就像:

代码语言:javascript
复制
var rtoc = RegionToCultures();

然后:

代码语言:javascript
复制
var switzerlandCultures = rtoc["CH"];

foreach (CultureInfo culture in switzerlandCultures)
{
    Console.WriteLine(culture.EnglishName);
}

注意,如果与不存在的键一起使用,ILookup<,> 不会抛出异常:rtoc["aaaaa"]只会返回一个空的IEnumerable<>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50506507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档