在C#中实现姓名脱敏,主要通过字符串处理来隐藏部分信息,保护用户隐私。以下是几种常见的实现方法:
- 基础姓名脱敏(保留首尾字符)
这种方法适用于大多数中文姓名场景,保留姓氏和最后一个字,中间用星号填充2。
public static string NameMask(string fullName)
{
if (string.IsNullOrEmpty(fullName)) return string.Empty;
if (fullName.Length == 1) return fullName;
if (fullName.Length == 2) return fullName[0] + "*";
// 长度大于等于3:保留首字符和最后一个字符
return fullName[0] + new string('*', fullName.Length - 2) + fullName[fullName.Length-1];
}
- 简化版脱敏(仅显示姓氏)
对于更严格的隐私保护需求,可以只显示姓氏,其余全部隐藏。
public static string SimpleNameMask(string name)
{
if (string.IsNullOrEmpty(name)) return name;
return name[0] + new string('*', name.Length - 1);
}
- 正则表达式脱敏
使用正则表达式可以更灵活地处理各种姓名格式。
public static string RegexNameMask(string name)
{
if (string.IsNullOrEmpty(name)) return name;
// 保留第一个字符,隐藏其余字符
string pattern = @"(?<=.{1}).";
return Regex.Replace(name, pattern, "*");
}
使用示例
// 测试示例
Console.WriteLine(NameMask("张三")); // 张*
Console.WriteLine(NameMask("李四郎")); // 李*郎
Console.WriteLine(NameMask("欧阳明日")); // 欧**日
Console.WriteLine(SimpleNameMask("王五")); // 王*
方法特点对比
方法类型 显示效果 适用场景
基础脱敏 张*、李*郎 常规业务展示
简化脱敏 张*、李* 高隐私要求
正则脱敏 张*、李*郎 复杂格式处理