C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C#姓名脱敏

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("王五")); // 王*

方法特点对比

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

到此这篇关于C#姓名脱敏的几种实现方法的文章就介绍到这了,更多相关C#姓名脱敏内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文