我正在使用此代码来替换索引中的所有找到的值:
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)"
Run Code Online (Sandbox Code Playgroud)
但我必须以更复杂的方式做到这一点,因为我必须用已发现的价值做些什么.例如:
MatchEvaluator me = delegate(Match m)
{
foundValue = /*getting value*/;
if (foundValue = "A") i--;
f = true;
i++;
return "i" + i.ToString();
};
Run Code Online (Sandbox Code Playgroud)
此代码的预期结果: "i1=(i2+i2*10)+i2*10+(i3*10.5)"
您可以使用Groups匹配对象中的集合来获取匹配的组.第一项是整个匹配,因此第一组的值位于索引1处:
string foundValue = m.Groups[1].Value;
if (foundValue == "A") i--;
Run Code Online (Sandbox Code Playgroud)