IDCardHelper幫助類庫 實現(xiàn)操作身份證驗證基類庫
身份證操作輔助類
綁定身份證類別的名稱
獲取身份證類別的名稱
驗證身份證結(jié)果
15位身份證明號碼轉(zhuǎn)化成18位用來編碼
獲取身份證對應(yīng)省份的區(qū)劃
獲取身份證對應(yīng)縣市的區(qū)劃
獲取身份證對應(yīng)地區(qū)的區(qū)劃
根據(jù)身份證判斷是否男女
根據(jù)身份證獲取出生年月
IDCardHelper幫助類庫源碼
using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using System.Data; using System.Text.RegularExpressions; namespace Commons { /// <summary> /// 身份證操作輔助類 /// </summary> public class IDCardHelper { private static DataTable dt_IdType; static IDCardHelper() { dt_IdType = new DataTable(); dt_IdType.Columns.Add("text"); dt_IdType.Columns.Add("value"); dt_IdType.Rows.Add(new object[] { "居民身份證", "A" }); dt_IdType.Rows.Add(new object[] { "軍官證", "C" }); dt_IdType.Rows.Add(new object[] { "士兵證", "D" }); dt_IdType.Rows.Add(new object[] { "軍官離退休證", "E" }); dt_IdType.Rows.Add(new object[] { "境外人員身份證明", "F" }); dt_IdType.Rows.Add(new object[] { "外交人員身份證明", "G" }); } /// <summary> /// 綁定身份證類別的名稱 /// </summary> /// <param name="cb">The cb.</param> public static void InitIdType(ComboBox cb) { cb.DataSource = dt_IdType; cb.DisplayMember = "text"; cb.ValueMember = "value"; cb.DropDownStyle = ComboBoxStyle.DropDownList; } /// <summary> /// 獲取身份證類別的名稱 /// </summary> /// <returns></returns> public static DataTable CreateIDType() { return dt_IdType; } /// <summary> /// 驗證身份證結(jié)果 /// </summary> /// <param name="idcard">身份證號碼</param> /// <returns>正確的時候返回string.Empty</returns> public static string Validate(string idcard) { if (idcard.Length != 18 && idcard.Length != 15) { return "身份證明號碼必須是15或者18位!"; } Regex rg = new Regex(@"^\d{17}(\d|X)$"); if (!rg.Match(idcard).Success) { return "身份證號碼必須為數(shù)字或者X!"; } if (idcard.Length == 15) { idcard = IdCard15To18(idcard); } else if (idcard.Length == 18) { int ll_sum = 0, tmp = 0; for (int i = 0; i < 17; i ) { tmp = int.Parse(idcard.Substring(i, 1)); ll_sum = tmp * li_quan[i]; } ll_sum = ll_sum % 11; if (idcard.Substring(17, 1) != ls_jy[ll_sum]) { return "身份證號碼最后一位應(yīng)該是" ls_jy[ll_sum] "!"; } } try { DateTime.Parse(idcard.Substring(6, 4) "-" idcard.Substring(10, 2) "-" idcard.Substring(12, 2)); } catch { return "非法生日"; } return string.Empty; } private static string[] ls_jy = { "1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2" }; private static int[] li_quan = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 }; /// <summary> /// 15位身份證明號碼轉(zhuǎn)化成18位用來編碼 /// </summary> /// <param name="idcard">15位的身份證號碼</param> /// <returns></returns> public static string IdCard15To18(string idcard) { /* string ls_jy[] = { "1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"}, t, ls_sfzmhm integer li_quan[] = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1} int ll_sum = 0, i ls_sfzmhm = mid(sfzmhm, 1, 6) '19' mid(sfzmhm, 7) for i = 1 to len(ls_sfzmhm) ll_sum = integer(mid(ls_sfzmhm, i, 1)) * li_quan[i] next ll_sum = mod(ll_sum, 11) ls_sfzmhm = ls_jy[ll_sum 1] return ls_sfzmhm */ if (idcard == null || idcard.Length != 15) { return idcard; } else { string result = string.Empty; int ll_sum = 0, tmp = 0; result = idcard.Substring(0, 6) "19" idcard.Substring(6, 9); for (int i = 0; i < 17; i ) { tmp = int.Parse(result.Substring(i, 1)); ll_sum = tmp * li_quan[i]; } ll_sum = ll_sum % 11; result = ls_jy[ll_sum]; return result; } } /// <summary> /// 獲取身份證對應(yīng)省份的區(qū)劃 /// </summary> /// <param name="id">身份證</param> /// <returns>頭兩位 4個0</returns> public static string GetProvince(string id) { return id.Substring(0, 2) "0000"; } /// <summary> /// 獲取身份證對應(yīng)縣市的區(qū)劃 /// </summary> /// <param name="id">身份證</param> /// <returns>頭4位 2個0</returns> public static string GetCity(string id) { return id.Substring(0, 4) "00"; } /// <summary> /// 獲取身份證對應(yīng)地區(qū)的區(qū)劃 /// </summary> /// <param name="id">身份證</param> /// <returns>頭6位</returns> public static string GetArea(string id) { return id.Substring(0, 6); } /// <summary> /// 根據(jù)身份證判斷是否男女 /// </summary> /// <param name="id">身份證號碼</param> /// <returns>返回"男"或者"女"</returns> public static string GetSexName(string id) { int sexStr = 0; if (id.Length == 15) { sexStr = Convert.ToInt32(id.Substring(14, 1)); } else if (id.Length == 18) { sexStr = Convert.ToInt32(id.Substring(16, 1)); } else { throw new ArgumentException("身份證號碼不是15或者18位!"); } return sexStr % 2 == 0 ? "女" : "男"; } /// <summary> /// 根據(jù)身份證獲取出生年月 /// </summary> /// <param name="id">身份證號碼</param> /// <returns>出生年月</returns> public static DateTime GetBirthday(string id) { string result = string.Empty; if (id.Length == 15) { result = "19" id.Substring(6, 2) "-" id.Substring(8, 2) "-" id.Substring(10, 2); } else if (id.Length == 18) { result = id.Substring(6, 4) "-" id.Substring(10, 2) "-" id.Substring(12, 2); } else { throw new ArgumentException("身份證號碼不是15或者18位!"); } return Convert.ToDateTime(result); } } }
原文鏈接:C#身份證驗證幫助類,IDCardHelper幫助類庫