按国家/地区名称获取RegionInfo?
我想通过执行以下操作来获取RegionInfo
:
new RegionInfo("United Kingdom");
但这引发了一个例外,并表示它无法识别。
RegionInfo上的此页面表示如果“name不是有效的国家/地区名称”,则会引发exception。
然而,此页面指定了包含United Kingdom
的类所使用的预定义区域列表,那么为什么不创建具有国家/地区名称的新RegionInfo
呢?
var regions = CultureInfo.GetCultures(CultureTypes.SpecificCultures).Select(x => new RegionInfo(x.LCID)); var englishRegion = regions.FirstOrDefault(region => region.EnglishName.Contains(name));
如果您想通过国家/地区名称获取RegionInfo
,您可以获得IEnumerable
,然后根据上面的EnglishName
进行过滤。 这使您能够填充combobox等内容。
来自MSDN ;
包含ISO 3166中针对国家/地区定义的双字母代码的字符串。
UNITED KINGDOM
在ISO网站上的国家名称和代码元素上看起来不错。
GB英国
试试;
new RegionInfo("GB");
您链接的同一页面也说:
RegionInfo名称是ISO 3166中针对国家/地区定义的双字母代码之一。 案件并不重要; 但是,Name,TwoLetterISORegionName和ThreeLetterISORegionName属性以大写forms返回相应的代码。
代码在页面上, GB
似乎是英国的2字母代码(代码顺序很难搜索!)。 所以试试这个:
new RegionInfo("GB");
或者,如果您使用的是.NET 2.0+,建议您使用完整的文化名称:
new RegionInfo("en-GB");
如果我导航到构造函数,我在Visual Studio中看到的摘要说:
name :包含ISO 3166中针对country / region定义的双字母代码的字符串.-或 – 包含特定区域性,自定义区域性或仅Windows文化的区域性名称的字符串。 如果文化名称不是RFC 4646格式 ,则应用程序应指定整个区域性名称,而不仅仅是国家 /地区。
整个文化名称为’en-GB’。
或者你可以使用’GB’
查看MSDN页面:
A string containing one of the two-letter codes defined in ISO 3166 for country/region.
您需要英国的ISO 3166代码,而不是国家/地区的名称。
这是您需要的代码 。
请注意参数name
的元数据中的此注释,该注释解释了.NET Framework 2.0的更改:
上述就是C#学习教程:按国家/地区名称获取RegionInfo?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
// A string containing one of the two-letter codes defined in ISO 3166 for country/region.-or-Beginning // in .NET Framework version 2.0, a string containing the culture name for a // specific culture, custom culture, or Windows-only culture. If the culture // name is not in RFC 4646 format, your application should specify the entire // culture name, not just the country/region.
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/961795.html