c# - 从 RegionInfo.TwoLetterISORegionName 获取 CultureInfo
问题描述
在 db 中,我已经使用 RegionInfo.TwoLetterISORegionName 值存储了值。Atm 我有比利时的“be”、“no”、“gb”、“en”等值。
如果我写:
var culture = new CultureInfo("be");
而不是比利时,我得到白俄罗斯。
所以我需要一种从 RegionInfo.TwoLetterISORegionName 获取 CultureInfo 的方法。
解决方案
给定两个字母的地区名称,有多种文化可以与该地区名称相关联(因为在一个国家/地区可以说多种语言)。例如,瑞士有 4 种文化:de、fr、it、rm。
现在一些代码:
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);
}
代码返回 a ILookup<string, CultureInfo>
(认为它是 a IDictionary<string, IEnumerable<CultureInfo>>
)。
像这样使用它:
var rtoc = RegionToCultures();
接着:
var switzerlandCultures = rtoc["CH"];
foreach (CultureInfo culture in switzerlandCultures)
{
Console.WriteLine(culture.EnglishName);
}
请注意,如果与不存在的键一起使用 aILookup<,>
不会引发异常:rtoc["aaaaa"]
只会返回一个 empty IEnumerable<>
。
推荐阅读
- python - 我的递归 Python 二进制搜索实现无法执行 if 子句并返回一个值,而是返回 None
- javascript - 如何 ?单击菜单外部时关闭菜单
- python - 如何使用 Python 通过网络抓取来提取信息?
- python - 将预先存在的数据加载到 Django 项目中
- ruby-on-rails - 没有关于如何在迁移到 Rails 5 时跟踪此错误的信息
- python-import - 从另一个文件导入类和调用方法导致无法识别的参数错误
- pandas - 根据字典熊猫数据框中的值分配索引
- paypal - 带有额外选项的 PayPal 订阅
- c - 禁用 GtkStackSidebar 小部件上的选项卡功能
- r - R是说已经有色标,而没有?