使用正则表达式进行增量字符替换

时间:2016-09-28 10:43:31

标签: c# regex pattern-matching

您好,我有一个像

这样的字符串
Some text here -   
~XY*901*000000001~MLC*~XY*901*000000005~MLC*~XY*901*0000000010~MLC* 
Some text here

我希望它像 -

Some text here 
~XY*901*000000001~MLC*~XY*901*000000002~MLC*~XY*901*000000003~MLC* 
Some text here 

说明:~XY*901*~MLC*之间的所有内容都应从1开始递增。

如何使用Regex Match Evaluator实现它?

1 个答案:

答案 0 :(得分:1)

有点lambada。呃,我的意思是lambda。

var input = @"Some text here -
~XY*901*000000001~MLC*~XY*901*000000005~MLC*~XY*901*0000000010~MLC*
More text here";

var reg = new System.Text.RegularExpressions.Regex(@"(~XY\*901\*)[0-9]+(~MLC\*)");

int i = 1;
var result = reg.Replace(input, m => m.Groups[1] + i++.ToString("D9") + m.Groups[2]);

Console.WriteLine(result);

正则表达式通过正则表达式的匹配替换循环。 同时增加整数。

输出:

Some text here -
~XY*901*000000001~MLC*~XY*901*000000002~MLC*~XY*901*000000003~MLC*
More text here