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