1

假设我有这个字符串:

3+5+6+2^5+9+1+2+32^2+10^10

我想替换 ^ 左侧和右侧出现的所有数字,包括 ^ 但不包括数字结束的位置,例如 + 符号,以此为例:

  • 2^5 现在应该变成 Pow(2,5)
  • 32^2 现在应该变成 Pow(32,2)
  • 10^10 现在应该变成 Pow(10,10)

我正在寻找某种正则表达式或字符串替换,它只会替换 ^ 符号左侧和右侧的数字(可以是小数)并且是较大字符串的一部分。试图使这项工作完全正确,我的大脑正在受伤。

4

2 回答 2

3

刚刚测试,并在这里工作:

    var str = Regex.Replace("3+5+6+2^5+9+1+2+32^2+10^10",
        @"(\d+)\^(\d+)", "Pow($1,$2)");

如果您需要对更换进行更多控制:

var str = Regex.Replace("3+5+6+2^5+9+1+2+32^2+10^10",
    @"(\d+)\^(\d+)",
    m => string.Format("Pow({0},{1})", m.Groups[1].Value, m.Groups[2].Value ));
于 2012-10-23T03:10:11.683 回答
2

您可以使用组来替换

Regex.Replace("yourString",@"(\d+)\^(\d+)","Pow($1,$2)");

(\d+)并被(\d+)分为两组,即Group1Group 2(不是第 0 组,因为它包含整个匹配项)

$1当你替换它时,你可以在替换字符串中使用和引用这些组$2

于 2012-10-23T03:09:09.320 回答