6

私は問題に苦労してきました。どんな助けもいただければ幸いです。

問題: 段落があり、複数回現れる変数を置き換えたい (Variable = @Variable)。これは簡単な部分ですが、私が苦労している部分は、変数を別の値に置き換えようとしているところです。

出現ごとに異なる値が必要です。たとえば、変数ごとに計算を行う関数があります。私がこれまでに持っているものは以下の通りです:

private string SetVariables(string input, string pattern){

    Regex rx = new Regex(pattern);
    MatchCollection matches = rx.Matches(input);
    int i = 1;
    if(matches.Count > 0)
    {
        foreach(Match match in matches)
        {
            rx.Replace(match.ToString(), getReplacementNumber(i));
            i++
        }
    }

必要な各変数を getReplacementNumber(i) 関数から返された数値に置き換えることはできますが、一致コレクションで見つかったのと同じ順序で、置き換えられた値で元の入力に戻すにはどうすればよいですか?

前もって感謝します!

マーカス

4

1 に答える 1

9

2 番目のパラメーターとしてReplaceaを受け取る のオーバーロードを使用します。MatchEvaluator

string result = rx.Replace(input, match => { return getReplacementNumber(i++); });

getReplacementNumber(int i)ここでは、 を返すと仮定していますstring。そうでない場合は、結果を文字列に変換する必要があります。

オンラインでの動作を確認してください: ideone

于 2012-06-15T21:14:07.497 に答える