6

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

问题:我有一个段落,我想替换一个出现多次的变量(Variable = @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) 函数返回的数字替换我需要的每个变量,但是如何按照匹配集合中的相同顺序将其放回原始输入中?

提前致谢!

马库斯

4

1 回答 1

9

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

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

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

在线查看它:ideone

于 2012-06-15T21:14:07.497 回答