替换单个字符左侧和右侧的字符

时间:2012-10-23 03:06:24

标签: c# regex string replace

假设我有这个字符串:

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)

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

2 个答案:

答案 0 :(得分: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 ));

答案 1 :(得分:2)

您可以使用群组替换

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

(\d+)(\d+)分为两组,即Group1Group 2(不包括0组,因为它包含整个匹配)

当您替换它时,您可以使用$1$2

在替换字符串中引用这些组