如何在 .NET 中用递增的 int 替换字符串?

How to replace string with incrementing int in .NET?

如果我有一个字符串:

mystring = "<p></p><p></p><p></p>"

所以基本上是 3 个空段落

如果我希望最终结果是:

<p id='1'></p><p id='2'></p><p id='3'></p>

我如何使用替换或类似功能来做到这一点? (在 C# 中)

如评论中所述,您可以在 MatchEvaluator 的帮助下使用正则表达式替换。归功于 this 所以回答。

public static void Main()
    {
        string text = "<p></p><p></p><p></p>";
        Console.WriteLine(text);
        Console.WriteLine(Transform(text));
    }

    static string Transform(string text)
    {
        int matchNumber = 0;
        return Regex.Replace(text, @"<p>", m => Replacement(m.Captures[0].Value, matchNumber++));
    }

    static string Replacement(string s, int i)
    {
        return string.Format("{0} id='{1}'>", s.Replace(">", ""), i + 1);
    }

Fiddle

如果你想编辑XML,你应该使用正确的XML方法

var yourString = "<p></p><p></p><p></p>";

var x = XElement.Parse("<Root>" + yourString + "</Root>");
var i = 0;
foreach (var element in x.Elements("p"))
    element.Add(new XAttribute("id", i++));

Console.WriteLine(String.Concat(x.Nodes()));

dotnetfiddle