मैं एक पाठ है incrementing द्वारा एक पाठ बदलें कहते हैं:प्रत्येक क्रिया
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++));
}
और इस्तेमाल उपरोक्त विधि की जगह है:
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();
}
वर्तमान में इसके बाद के संस्करण कोड काम नहीं कर रहा और बीच में पाठ की जगह है।
क्या आप इसे ठीक करने में मेरी सहायता कर सकते हैं?
विक्टर का जवाब है सबसे अच्छा समाधान। आपका प्रतिस्थापन तर्क काम नहीं कर रहा है, हालांकि यह है कि आपके foreach के प्रत्येक पुनरावृत्ति पर मैचों के सूचकांक मान पुराने हो गए हैं क्योंकि xx बदल गया है। यदि आपको एक प्रतिस्थापन विधि लिखनी है तो ऐसा लगता है कि यह रिकर्सिव होगा। –