Tôi có một văn bản nói:Thay thế một văn bản bằng cách tăng mỗi điều xảy ra
Hello
abc
Hello
def
Hello
Tôi muốn chuyển nó sang
Hello1
abc
Hello2
abc
Hello3
tức là tôi cần phải thêm một số sau mỗi lần xảy ra "Hello" bản văn.
Hiện nay tôi đã viết mã này:
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++));
}
và Replace phương pháp trên sử dụng là:
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();
}
Hiện nay các mã trên không hoạt động và đang dần thay thế các văn bản ở giữa.
Bạn có thể giúp tôi khắc phục điều đó không?
Wiktor của câu trả lời là giải pháp tốt nhất. Lý do logic thay thế của bạn không hoạt động mặc dù là trên mỗi lần lặp lại của bạn foreach các giá trị chỉ số của các trận đấu đi ra khỏi ngày vì xx đã thay đổi. Nếu bạn phải viết một phương pháp thay thế nó có vẻ như nó sẽ được đệ quy. –