C#根据身份证获取身份证信息以及(一级)身份证各省级*的代码

1.

/// <summary>
/// 根据身份证获取身份证信息
/// 18位身份证
/// 0地区代码(1~6位,其中1、2位数为各省级*的代码,3、4位数为地、市级*的代码,5、6位数为县、区级*代码)
/// 1出生年月日(7~14位)
/// 2顺序号(15~17位单数为男性分配码,双数为女性分配码)
/// 3性别
///
/// 15位身份证
/// 0地区代码
/// 1出生年份(7~8位年,9~10位为出生月份,11~12位为出生日期
/// 2顺序号(13~15位),并能够判断性别,奇数为男,偶数为女
/// 3性别
/// </summary>
/// <param name="cardId"></param>
/// <returns></returns>
public string[] GetIdCardInfo(string cardId)
{
  string[] info = new string[4];

  if (string.IsNullOrEmpty(cardId))
  {
    return info;
  }

  try
  {
    System.Text.RegularExpressions.Regex regex = null;
    if (cardId.Length == 18)
    {
      regex = new Regex(@"^\d{17}(\d|x|X)$");
      if (regex.IsMatch(cardId))
      {

        info.SetValue(cardId.Substring(0, 6), 0);
        info.SetValue(DateTime.ParseExact(cardId.Substring(6, 8), "yyyyMMdd", CultureInfo.CurrentCulture).ToString("yyyy-MM-dd"), 1);
        info.SetValue(cardId.Substring(14, 3), 2);
        info.SetValue(Convert.ToInt32(info[2]) % 2 != 0 ? "男" : "女", 3);
      }
    }
    else if (cardId.Length == 15)
    {
      regex = new Regex(@"^\d{15}");
      if (regex.IsMatch(cardId))
      {
        info.SetValue(cardId.Substring(0, 6), 0);
        info.SetValue(DateTime.ParseExact(cardId.Substring(6, 6), "yyyyMMdd", CultureInfo.CurrentCulture).ToString("yyyy-MM-dd"), 1);
        info.SetValue(cardId.Substring(12, 3), 2);
        info.SetValue(Convert.ToInt32(info[2]) % 2 != 0 ? "男" : "女", 3);
      }
    }
  }
  catch (Exception ex)
  {
    info[0] = ex.Message;
  }

  return info;
}

2.身份证前2位就是省 前6位就是省市县

Dictionary<int, string> openWith = new Dictionary<int, string>();
            openWith.Add(11, "北京市");
            openWith.Add(12, "天津市");
            openWith.Add(13, "河北省");
            openWith.Add(14, "山西省");
            openWith.Add(15, "内蒙古自治区");
            openWith.Add(21, "辽宁省");
            openWith.Add(22, "吉林省");
            openWith.Add(23, "黑龙江省");
            openWith.Add(31, "上海市");
            openWith.Add(32, "江苏省");
            openWith.Add(33, "浙江省");
            openWith.Add(34, "安徽省");
            openWith.Add(35, "福建省");
            openWith.Add(36, "江西省");
            openWith.Add(37, "山东省");
            openWith.Add(41, "河南省");
            openWith.Add(42, "湖北省");
            openWith.Add(43, "湖南省");
            openWith.Add(44, "广东省");
            openWith.Add(45, "广西壮族自治区");
            openWith.Add(45, "海南省");
            openWith.Add(50, "重庆市");
            openWith.Add(51, "四川省");
            openWith.Add(52, "贵州省");
            openWith.Add(53, "云南省");
            openWith.Add(54, "*自治区");
            openWith.Add(61, "陕西省");
            openWith.Add(62, "甘肃省");
            openWith.Add(63, "青海省");
            openWith.Add(64, "宁夏回族自治区");
            openWith.Add(65, "**自治区");
            openWith.Add(71, "*省");
            openWith.Add(81, "香港特别行政区");
            openWith.Add(82, "澳门特别行政区");
        }

 

上一篇:The number of positions


下一篇:【MySQL】SUBSTRING_INDEX用法