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)になるはずです

^記号の左側と右側の数字(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+)は2つのグループにキャプチャされます。つまりGroup1、およびGroup 2(一致全体が含まれているためグループ0ではありません)

置換する場合、およびを使用して置換文字列でこれらのグループを参照できます$1$2

于 2012-10-23T03:09:09.320 に答える