掩盖字符串中的数字

时间:2015-08-06 10:18:00

标签: c# regex

我想更改包含数字的文字。数字的第一个和最后一个字符需要保留,其他字符应替换为*。与文本混合的数字应保持不变。

我有这段代码:

string result = Regex.Replace(input, @"(?<=[\d]{1})[\d]*(?=[\d]{1})", 
                              m => new string('*', m.Length));

使用此输入:

"Lorem 1 ip234sum 22 dolor 3234445 sit amet, adipiscing 1234"

应显示此结果:

"Lorem 1 ip234sum 22 dolor 3*****5 sit amet, adipiscing 1**4"

但是,当前的输出是:

"Lorem 1 ip2*4sum 22 dolor 3*****5 sit amet, adipiscing 1**4"

如您所见,错误也会在ip234sum上运行。如何让它忽略不完全数字的字符串部分?

1 个答案:

答案 0 :(得分:5)

在您的环顾中添加\b锚点可以解决问题:

string result = Regex.Replace(input, @"(?<=\b[\d]{1})[\d]*(?=[\d]{1}\b)", m => new string('*', m.Length));
//                                         ^^                       ^^

Demo.

相关问题