C#:姓名脱敏

C#姓名脱敏实现方法

在C#中实现姓名脱敏,主要通过字符串处理来隐藏部分信息,保护用户隐私。以下是几种常见的实现方法:

1. 基础姓名脱敏(保留首尾字符)‌
这种方法适用于大多数中文姓名场景,保留姓氏和最后一个字,中间用星号填充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];
}

2. 简化版脱敏(仅显示姓氏)‌
对于更严格的隐私保护需求,可以只显示姓氏,其余全部隐藏。
public static string SimpleNameMask(string name)
{
    if (string.IsNullOrEmpty(name)) return name;
    
    return name[0] + new string('*', name.Length - 1);
}

3. 正则表达式脱敏‌
使用正则表达式可以更灵活地处理各种姓名格式。
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("王五")); // 王*

方法特点对比
方法类型     显示效果     适用场景
基础脱敏     张*、李*郎     常规业务展示
简化脱敏     张*、李*     高隐私要求
正则脱敏     张*、李*郎     复杂格式处理

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值