身份证工具-IdcardUtil
# 简介
在日常开发中,我们对身份证的验证主要是正则方式(位数,数字范围等),但是中国身份证,尤其18位身份证每一位都有严格规定,并且最后一位为校验位。而我们在实际应用中,针对身份证的验证理应严格至此。于是IdcardUtil应运而生。
静态工具类 IdcardUtil,,主要提供了对身份证号码的验证、解析、生成等功能。其中包括判断身份证号码是否合法、获取身份证号码中的生日和性别信息、替换身份证号码中的生日和性别信息、生成随机的身份证号码等功能。
# EasyTool.IdcardUtil 类
方法说明:
IsValid(string idcard)
: 判断给定的身份证号码是否合法。GetBirthday(string idcard)
: 获取给定身份证号码中的生日信息。GetGender(string idcard)
: 获取给定身份证号码中的性别信息。ReplaceBirthday(string idcard, DateTime birthday)
: 将身份证号码中的生日部- 分替换成指定的日期,并返回新的身份证号码。ReplaceGender(string idcard, Gender gender)
: 将身份证号码中的性别部分替换- 成指定的性别,并返回新的身份证号码。GenerateRandomIdcard()
: 生成一个随机的身份证号码。
# IsValid-验证身份证号码是否合法
/// <summary>
/// 验证身份证号码是否合法
/// </summary>
/// <param name="idcard">身份证号码</param>
/// <returns>验证结果</returns>
public static bool IsValid(string idcard)
# IsValid15-验证 15 位身份证号码是否合法
/// <summary>
/// 验证 15 位身份证号码是否合法
/// </summary>
/// <param name="idcard">15 位身份证号码</param>
/// <returns>验证结果</returns>
public static bool IsValid15(string idcard)
# IsValid18-验证 18 位身份证号码是否合法
/// <summary>
/// 验证 18 位身份证号码是否合法
/// </summary>
/// <param name="idcard">18 位身份证号码</param>
/// <returns>验证结果</returns>
public static bool IsValid18(string idcard)
# IsValidArea-判断给定的区域代码是否合法
/// <summary>
/// 判断给定的区域代码是否合法
/// </summary>
/// <param name="area">区域代码</param>
/// <returns>是否合法</returns>
public static bool IsValidArea(string area)
# IsValidChecksum-验证身份证号码的校验位是否正确
/// <summary>
/// 验证身份证号码的校验位是否正确
/// </summary>
/// <param name="idcard">身份证号码</param>
/// <returns>验证结果</returns>
public static bool IsValidChecksum(string idcard)
# GetBirthday-从身份证号码中获取生日
/// <summary>
/// 从身份证号码中获取生日
/// </summary>
/// <param name="idcard">身份证号码</param>
/// <returns>生日</returns>
public static DateTime? GetBirthday(string idcard)
# GetGender-从身份证号码中获取性别
/// <summary>
/// 从身份证号码中获取性别
/// </summary>
/// <param name="idcard">身份证号码</param>
/// <returns>性别</returns>
public static Gender? GetGender(string idcard)
# GetProvince-从身份证号码中获取
/// <summary>
/// 从身份证号码中获取
/// </summary>
/// <param name="idcard">身份证号码</param>
/// <returns>省份</returns>
public static string GetProvince(string idcard)
# ReplaceBirthday-将身份证号码中的生日部分替换成指定的日期,并返回新的身份证号码
/// <summary>
/// 将身份证号码中的生日部分替换成指定的日期,并返回新的身份证号码
/// </summary>
/// <param name="idcard">身份证号码</param>
/// <param name="birthday">新的生日日期</param>
/// <returns>新的身份证号码</returns>
public static string ReplaceBirthday(string idcard, DateTime birthday)
# ReplaceGender-将身份证号码中的性别部分替换成指定的性别,并返回新的身份证号码
/// <summary>
/// 将身份证号码中的性别部分替换成指定的性别,并返回新的身份证号码
/// </summary>
/// <param name="idcard">身份证号码</param>
/// <param name="gender">新的性别</param>
/// <returns>新的身份证号码</returns>
public static string ReplaceGender(string idcard, Gender gender)
# GenerateRandomIdcard-生成一个随机的身份证号码
/// <summary>
/// 生成一个随机的身份证号码
/// </summary>
/// <param name="gender">性别</param>
/// <param name="minAge">最小年龄</param>
/// <param name="maxAge">最大年龄</param>
/// <returns>随机的身份证号码</returns>
public static string GenerateRandomIdcard(Gender gender = Gender.Male, int minAge = 18, int maxAge = 65)
# 代码示例
using System;
class Program
{
static void Main(string[] args)
{
// 验证身份证号码是否合法
string idcard = "510101199001010010";
bool isValid = IdcardUtil.IsValid(idcard);
Console.WriteLine("身份证号码 {0} 是否合法:{1}", idcard, isValid);
// 获取身份证号码的生日信息
DateTime birthday = IdcardUtil.GetBirthday(idcard);
Console.WriteLine("身份证号码 {0} 的生日为 {1}", idcard, birthday.ToString("yyyy年MM月dd日"));
// 获取身份证号码的性别信息
Gender gender = IdcardUtil.GetGender(idcard);
Console.WriteLine("身份证号码 {0} 的性别为 {1}", idcard, gender == Gender.Male ? "男" : "女");
// 将身份证号码中的生日部分替换成指定的日期,并返回新的身份证号码
DateTime newBirthday = new DateTime(1992, 4, 15);
string newIdcard1 = IdcardUtil.ReplaceBirthday(idcard, newBirthday);
Console.WriteLine("将身份证号码 {0} 中的生日部分替换成 {1},得到新的身份证号码 {2}", idcard, newBirthday.ToString("yyyyMMdd"), newIdcard1);
// 将身份证号码中的性别部分替换成指定的性别,并返回新的身份证号码
Gender newGender = Gender.Female;
string newIdcard2 = IdcardUtil.ReplaceGender(idcard, newGender);
Console.WriteLine("将身份证号码 {0} 中的性别部分替换成 {1},得到新的身份证号码 {2}", idcard, newGender == Gender.Male ? "男" : "女", newIdcard2);
// 生成一个随机的身份证号码
string randomIdcard = IdcardUtil.GenerateRandomIdcard();
Console.WriteLine("随机生成一个身份证号码:{0}", randomIdcard);
Console.ReadLine();
}
}
# 输出结果
身份证号码 510101199001010010 是否合法:True
身份证号码 510101199001010010 的生日为 1990年01月01日
身份证号码 510101199001010010 的性别为 男
将身份证号码 510101199001010010 中的生日部分替换成 19920415,得到新的身份证号码 510101199204150018
将身份证号码 510101199001010010 中的性别部分替换成 女,得到新的身份证号码 510101199001010023
随机生成一个身份证号码:210224196501015478
上次更新: 2023/04/26, 22:10:06