C# Regex-матч и замена, автоматическое приращение

Я работал с проблемой,и любая помощь была бы оценена.

проблема: у меня есть абзац, и я хочу заменить переменную, которая появляется несколько раз (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), но как вернуть ее в исходный ввод с замененными значениями в том же порядке, что и в коллекции match?

спасибо заранее!

Марк

1 ответов


используйте перегрузку Replace что происходит MatchEvaluator в качестве второго параметра.

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

Я предполагаю, что getReplacementNumber(int i) возвращает string. Если нет,вам придется преобразовать результат в строку.

см. его работу в интернете:ideone