如何在 .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);
}
如果你想编辑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()));
如果我有一个字符串:
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);
}
如果你想编辑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()));