をインクリメントすることにより、テキストを置き換え、私はテキストを持っていると言う:各出現
Hello
abc
Hello
def
Hello
は、私は「こんにちは」の各発生後に番号を追加する必要が
Hello1
abc
Hello2
abc
Hello3
すなわちに変換したいですテキスト。
現在、私はこのコードを書かれている:
var xx = File.ReadAllText("D:\\test.txt");
var regex = new Regex("Hello", RegexOptions.IgnoreCase);
var matches = regex.Matches(xx);
int i = 1;
foreach (var match in matches.Cast<Match>())
{
string yy = match.Value;
xx = Replace(xx, match.Index, match.Length, match.Value + (i++));
}
と使用上のReplaceメソッドは次のとおりです。
public static string Replace(string s, int index, int length, string replacement)
{
var builder = new StringBuilder();
builder.Append(s.Substring(0, index));
builder.Append(replacement);
builder.Append(s.Substring(index + length));
return builder.ToString();
}
現在、上記のコードは動作していないとの間でテキストを置き換えています。
あなたはそれを修正するのに手伝ってもらえますか? Hello
はここで、より複雑なパターンのためだけのプレースホルダであると仮定すると、
Wiktor第の答えがある参照してください。最高のソリューション。あなたの交換ロジックが動作していない理由は、xxが変更されたため、foreachの各繰り返しで一致のインデックス値が古くなってしまうことです。 Replaceメソッドを記述する必要がある場合は、再帰的であるように見えます。 –