C# 正则表达式 - 匹配和替换,自动增量

本文关键字:替换 正则表达式 | 更新日期: 2023-09-27 18:37:18

我一直在努力解决一个问题,任何帮助将不胜感激。

问题:我有一个段落,我想替换一个多次出现的变量(变量 = @Variable)。 这是简单的部分,但我遇到困难的部分是尝试用不同的值替换变量。

我需要每个匹配项都有不同的值。 例如,我有一个函数可以为每个变量进行计算。到目前为止,我所拥有的如下:

private string SetVariables(string input, string pattern){
    Regex rx = new Regex(pattern);
    MatchCollection matches = rx.Matches(input);
    int i = 1;
    if(matches.Count > 0)
    {
        foreach(Match match in matches)
        {
            rx.Replace(match.ToString(), getReplacementNumber(i));
            i++
        }
    }

我能够用从 getReplacementNumber(i) 函数返回的数字替换我需要的每个变量,但是如何按照匹配集合中相同的顺序将其放回带有替换值的原始输入中?

提前感谢!

马库斯

C# 正则表达式 - 匹配和替换,自动增量

使用将MatchEvaluator作为其第二个参数的Replace重载。

string result = rx.Replace(input, match => { return getReplacementNumber(i++); });

我在这里假设getReplacementNumber(int i)返回一个string.如果没有,则必须将结果转换为字符串。

在线查看它的工作:ideone