快速获取Windows系统上的国家和地区信息


Windows系统上包含了200多个国家和地区的数据,有时候编程需要这些资料。以下代码可以帮助你快速获取这些信息。
将Console语句注释掉,可以更快的完成分析。

 1 static void Main(string[] args) {
 2     Console.WriteLine("Start!");
 3     // 这里可以修改文件路径和文件名称。
 4     var sw = new StreamWriter(new FileStream("RegionInfo.txt", FileMode.OpenOrCreate)); 
 5     
 6     // 通过反射获取 RegionInfo 类的属性,作为标题写入文件流
 7     sw.WriteLine("Culture," + string.Join(",", typeof(RegionInfo).GetProperties().Select(p => p.Name).ToArray()));
 8     
 9     // Windows 系统中定义国家和地区信息使用 Culture 参数,该参数包含2位国家代码和2位地区代码
10     for (var i = 0x00; i < 0xff; i++) {
11         for (var j = 0x00; j < 0xff; j++) {
12             var culture = (i << 8) + j; // 构建 Culture 参数,i 为国家代码,j 为地区代码
13             RegionInfo ri = null;
14             // 并不是所有的 Culture 参数都是有效参数,因此需要处理实例化异常
15             try {
16                 ri = new RegionInfo(culture);
17                 // 通过反射获取实例化对象的属性值,并写入文件流
18                 sw.WriteLine(culture + "," + string.Join(",", ri.GetType().GetProperties().Select(p => p.GetValue(ri, null).ToString()).ToArray()));
19                 Console.WriteLine("0x{0:x}\tdone!", culture);
20             } catch {
21                 continue;
22             }
23         }
24     }
25     sw.Flush();
26     sw.Close();
27     Console.WriteLine("All done!");
28     Console.ReadKey();
29 }

C#中除了 RegionInfo 类包含国家和地区信息,CultureInfo 类还包含了语言、文字等相关的其他信息,可以自行替换分析。

本文来自飞扬的尘埃的博客,转载请注明出处。