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 fullName0 + "*";

// 长度大于等于3:保留首字符和最后一个字符

return fullName0 + new string('*', fullName.Length - 2) + fullNamefullName.Length-1;

}

  1. 简化版脱敏(仅显示姓氏)‌

对于更严格的隐私保护需求,可以只显示姓氏,其余全部隐藏。

public static string SimpleNameMask(string name)

{

if (string.IsNullOrEmpty(name)) return name;

return name0 + new string('*', name.Length - 1);

}

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

方法特点对比

方法类型 显示效果 适用场景

基础脱敏 张*、李*郎 常规业务展示

简化脱敏 张*、李* 高隐私要求

正则脱敏 张*、李*郎 复杂格式处理

相关推荐
Lost of 程序猿7 小时前
用 YARP 为 .NET 微服务搭一座“立交桥“:路由转发与生产配置实践
c#·asp.net
码行山野赴时序归途7 小时前
链表家族收官篇:循环链表
c语言·开发语言·数据结构·链表
景熙55237 小时前
单体项目编写思路和落地形式
java·开发语言
计算机毕设定制辅导-无忧学长8 小时前
《基于SpringBoot的未成年人健康知识科普平台的设计与实现》
java·开发语言·vue.js·spring boot·未成年人健康知识科普平台
Ivanqhz8 小时前
Ping-Pong 双缓冲
开发语言·人工智能·python·深度学习·mlir
m0_734571768 小时前
深入理解C++ RAII
开发语言·c++
泡海椒8 小时前
jquick-pdf 表格实战:动态数据 PDF 报表生成
java·开发语言·pdf
aramae8 小时前
模拟实现memset()(C语言)
c语言·开发语言·后端
wuyk5559 小时前
【Socket 进阶之路】第 7 章 IO 多路复用 select & poll 完整实战|多 fd 监听、超时等待、优缺点横向对比
服务器·开发语言·网络·数据库·物联网
船厂电气自动化ai大模型9 小时前
AI大模型与数学|第81天 课程:正交向量、正交基、格拉姆‑施密特(Gram‑Schmidt)正交化
开发语言·数据结构·人工智能·线性代数·机器学习