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

方法特点对比

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

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

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

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

相关推荐
晗夜未央38 分钟前
任务队列反复失败,先分清重试、阻塞和结果待核对
开发语言·javascript
熊猫钓鱼>_>41 分钟前
四种书签,一条时间线:一个读书 App 的记忆颗粒与它的边界案例【鸿蒙心迹】
开发语言·华为·ai编程·harmonyos·鸿蒙·openharmony·鸿蒙pc
努力努力再努力wz1 小时前
【Lua 入门系列】Lua 函数深入理解:函数对象、多返回值、可变参数、闭包、递归与尾调用优化
开发语言·lua
飞浪纪元[FWC–FE]2 小时前
从零到一键绿:Qt 5.14.2 + VS2019 开发环境搭建、Kit 套件配置与构建错误修复完全手册
开发语言·qt
Wang's Blog2 小时前
Java 项目实战:交友项目 - 联系人列表
java·开发语言·交友
我命由我123452 小时前
访客系统形式(有用户概念、无用户概念)
java·开发语言·前端·javascript·python·产品运营·产品经理
架构师伯子明2 小时前
FFmpeg C++学习(一):编译和demo
开发语言·c++·学习
海域云SeaArea_2 小时前
Windows Server 2008 R2 从零安装 IIS7.5(二):php.ini 配置
开发语言·windows·php
叼烟扛炮2 小时前
[LangChain] 学习笔记(02):LCEL 链式调用与动态模型配置实战
服务器·开发语言·网络·笔记·学习·langchain
xixingzhe22 小时前
图表中同比与环比的区别:看趋势还是看变化?
开发语言·python