c#根据身份证获取身份证信息
程序员文章站
2022-03-20 12:25:27
1 /// 2 /// 根据身份证获取身份证信息 3 /// 18位身份证 4 /// 0地区代码(1~6位,其中1、2位数为各省级*的代码,3、4位数为地、市级*的代码,5、6位数为县、区级*代码) 5 /// 1出生年月日(7~14位) 6 /// 2顺序号(15~17位单数为男性分配码,... ......
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 }
上一篇: Java的IO流