本站之前分享过 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}")
    };
}
(adsbygoogle = window.adsbygoogle || []).push({});