以下是一个C#方法,用于将身份证号中的出生年月日部分替换为星号(*):
using System;
public class IdCardProcessor
{
/// <summary>
/// 将身份证号中的出生年月日替换为星号
/// </summary>
/// <param name="idCardNumber">18位身份证号</param>
/// <returns>处理后的身份证号,出生年月日部分被替换为*号</returns>
public static string MaskBirthDateInIdCard(string idCardNumber)
{
// 检查身份证号是否有效(18位)
if (string.IsNullOrEmpty(idCardNumber) || idCardNumber.Length != 18)
{
throw new ArgumentException("请提供有效的18位身份证号", nameof(idCardNumber));
}
// 身份证号的第7-14位是出生年月日(例如:19900101)
// 保留前6位和后4位,中间8位替换为*
return idCardNumber.Substring(0, 6) + "********" + idCardNumber.Substring(14, 4);
}
// 使用示例
public static void Main()
{
string originalIdCard = "110101199001011234";
string maskedIdCard = MaskBirthDateInIdCard(originalIdCard);
Console.WriteLine("原始身份证号: " + originalIdCard);
Console.WriteLine("处理后身份证号: " + maskedIdCard);
// 输出结果: 110101********1234
}
}
这个方法的工作原理是:
- 首先验证输入的身份证号是否为有效的18位字符串
- 身份证号的第7-14位(索引6-13)代表出生年月日
- 保留前6位和后4位,中间8位出生年月日替换为8个星号(*)
- 返回处理后的身份证号
例如,对于身份证号110101199001011234
,处理后会变成110101********1234
。