我正在使用这段代码通过索引替换字符串中所有找到的值:
int i = 0;
input = "FGS1=(B+A*10)+A*10+(C*10.5)";
Regex r = new Regex("([A-Z][A-Z\\d]*)");
bool f = false;
MatchEvaluator me = delegate(Match m)
{
f = true;
i++;
return "i" + i.ToString();
};
do { f = false; input = r.Replace(input, me); } while (f);
//expected result: input == "i1=(i2+i3*10)+i4*10+(i5*10.5)"
但我必须以更复杂的方式来做,因为我必须做一些具有发现值(value)的事情。例如:
MatchEvaluator me = delegate(Match m)
{
foundValue = /*getting value*/;
if (foundValue = "A") i--;
f = true;
i++;
return "i" + i.ToString();
};
此代码的预期结果:"i1=(i2+i2*10)+i2*10+(i3*10.5)"
最佳答案
您可以在匹配对象中使用Groups
集合来获取匹配的组。第一项是整个匹配项,因此第一组的值位于索引 1 处:
string foundValue = m.Groups[1].Value;
if (foundValue == "A") i--;
关于c# - 使用 Regex.Replace 方法时如何找到子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27676161/