在C#中,我想替换所有敏感数字,并用*替换/掩码,但还有一些其他数字我不想替换,例如电话号码是一个常量.

这就是我现在正在做的事情


String original = "this is your sensitive digit 12345 , if you have any question please call CONSTANTPHONENUMBER";
String pattern = @"[0-9]{4,}";
String result =  Regex.Replace(original, pattern, "****");

结果是

这是您的敏感数字*,如果您有任何问题,请致电*

我的问题是,我如何排除那个CONSTANTPHONENUMBER,这样它就不会被替换.

想要的结果

"this is your sensitive digit **** , if you have any question please call CONSTANTPHONENUMBER"

推荐答案

我能想到的最简单的一种方法是使用\b(单词边界)包围的负向前视.也有多项排除:

var str = "Digit 1 is 12345, please call 111222 or 334455";
var pat = @"\b(?!111222|334455)\b\d{4,}";
System.Console.WriteLine(Regex.Replace(str, pat, "****"));
// Digit 1 is ****, please call 111222 or 334455

Csharp相关问答推荐

如何创建ASP.NET Core主机并在同一进程中运行请求

EF Core 8—应用客户端投影后无法转换集操作

try 还原包时出错:Dapper已经为System.Data.SQLClient定义了依赖项''''

Microsoft. VisualBasic. FileIO. FileSystem. MoveFile()对话框有错误?

如何将Kafka消息时间戳转换为C#中的日期和时间格式?

REST API端点中异步后台代码执行的类型

Amazon SP-API确认发货不设置&Quot;递送服务

StackExchange.Redis.RedisServerException:调用ITransaction.ExecuteAsync()时出现错误未知命令取消监视

每个http请求需要60秒,为什么?

交替的奇数

Blazor Fluent UI DialogService,<;FluentDialogProvider/>;错误

为什么Docker中没有转发该端口?

我可以查看我们向应用程序洞察发送了多少数据吗?

为什么我的伺服电机不动,下面的代码?

如何在mediatr命令中访问HttpContext而不安装弃用的nuget包

WPF动态设置弹出窗口水平偏移

用MongoDB c#驱动程序删除和返回嵌套数组中的文档

为什么连接到Google OAuth2后,结果.Credential为空?

为什么INTEGER在通过反射调用时对空对象返回TRUE,而在INTEGER上调用时返回FALSE?

LINQ在GROUP BY和JOIN之后获取子列表