c#根据身份证获取身份证信息

南笙酒味 提交于 2020-01-26 08:51:37
 1 /// <summary>
 2 /// 根据身份证获取身份证信息
 3 /// 18位身份证
 4 /// 0地区代码(1~6位,其中1、2位数为各省级政府的代码,3、4位数为地、市级政府的代码,5、6位数为县、区级政府代码)
 5 /// 1出生年月日(7~14位)
 6 /// 2顺序号(15~17位单数为男性分配码,双数为女性分配码)
 7 /// 3性别
 8 /// 
 9 /// 15位身份证
10 /// 0地区代码 
11 /// 1出生年份(7~8位年,9~10位为出生月份,11~12位为出生日期 
12 /// 2顺序号(13~15位),并能够判断性别,奇数为男,偶数为女
13 /// 3性别
14 /// </summary>
15 /// <param name="cardId"></param>
16 /// <returns></returns>
17 public string[] GetIdCardInfo(string cardId)
18 {
19   string[] info = new string[4];
20 
21   if (string.IsNullOrEmpty(cardId))
22   {
23     return info;
24   }
25 
26   try
27   {
28     System.Text.RegularExpressions.Regex regex = null;
29     if (cardId.Length == 18)
30     {
31       regex = new Regex(@"^\d{17}(\d|x|X)$");
32       if (regex.IsMatch(cardId))
33       {
34 
35         info.SetValue(cardId.Substring(0, 6), 0);
36         info.SetValue(DateTime.ParseExact(cardId.Substring(6, 8), "yyyyMMdd", CultureInfo.CurrentCulture).ToString("yyyy-MM-dd"), 1);
37         info.SetValue(cardId.Substring(14, 3), 2);
38         info.SetValue(Convert.ToInt32(info[2]) % 2 != 0 ? "男" : "女", 3);
39       }
40     }
41     else if (cardId.Length == 15)
42     {
43       regex = new Regex(@"^\d{15}");
44       if (regex.IsMatch(cardId))
45       {
46         info.SetValue(cardId.Substring(0, 6), 0);
47         info.SetValue(DateTime.ParseExact(cardId.Substring(6, 6), "yyyyMMdd", CultureInfo.CurrentCulture).ToString("yyyy-MM-dd"), 1);
48         info.SetValue(cardId.Substring(12, 3), 2);
49         info.SetValue(Convert.ToInt32(info[2]) % 2 != 0 ? "男" : "女", 3);
50       }
51     }
52   }
53   catch (Exception ex)
54   {
55     info[0] = ex.Message;
56   }
57 
58   return info;
59 }

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!