我想更改包含数字的文字。数字的第一个和最后一个字符需要保留,其他字符应替换为*
。与文本混合的数字应保持不变。
我有这段代码:
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
上运行。如何让它忽略不完全数字的字符串部分?
答案 0 :(得分:5)
在您的环顾中添加\b
锚点可以解决问题:
string result = Regex.Replace(input, @"(?<=\b[\d]{1})[\d]*(?=[\d]{1}\b)", m => new string('*', m.Length));
// ^^ ^^