本站之前分享过 php身份证号脱敏(替换指定长度的字符为“*”号)的方法,今天再分享一下使用 C# 将身份证号、电话号码、QQ号、邮箱之类的敏感信息进行脱敏处理的方法,呈现基本信息的同时并保护用户隐私。比如13888888888这样的手机号,通常展示为138****8888。
/// <summary>
/// 字符串掩码
/// </summary>
/// <param name="s">字符串</param>
/// <param name="mask">掩码符</param>
/// <returns></returns>
public static string Mask(this string s, char mask = '*')
{
if (string.IsNullOrWhiteSpace(s?.Trim()))
{
return s;
}
s = s.Trim();
string masks = mask.ToString().PadLeft(4, mask);
return s.Length switch
{
>= 11 => Regex.Replace(s, "(.{3}).*(.{4})", $"$1{masks}$2"),
10 => Regex.Replace(s, "(.{3}).*(.{3})", $"$1{masks}$2"),
9 => Regex.Replace(s, "(.{2}).*(.{3})", $"$1{masks}$2"),
8 => Regex.Replace(s, "(.{2}).*(.{2})", $"$1{masks}$2"),
7 => Regex.Replace(s, "(.{1}).*(.{2})", $"$1{masks}$2"),
6 => Regex.Replace(s, "(.{1}).*(.{1})", $"$1{masks}$2"),
_ => Regex.Replace(s, "(.{1}).*", $"$1{masks}")
};
}