我的文本正文包含多个<p>
标记。我想在此文本正文中为每个P标记插入一个GUID。
最初我这样做text = text.Replace("<p>", "<p data-paragraph-id=" + Guid.NewGuid().ToString() + ">");
但是,正如您所看到的,这将为每个P标签添加相同的GUID。我的问题是:如何为每个P标签插入一个唯一的GUID?
答案 0 :(得分:5)
您正在寻找允许为每场比赛返回自定义结果的Regex.Replace(或其静态veriosn):
string Replace(字符串输入,MatchEvaluator求值程序)
在指定的输入字符串中,将匹配指定正则表达式的所有字符串替换为MatchEvaluator委托返回的字符串
样品:
var result = Regex.Replace(text, "<p>", _ =>
"<p data-paragraph-id=" + Guid.NewGuid().ToString() + ">");
附注:如果您正在尝试修改HTML,请考虑使用HTMLAgilityPack读取并通过DOM添加属性...比任何RegEx /字符串替换/连接更安全/更可扩展,您可以提出。
答案 1 :(得分:1)
这是一个LINQ方法,可以做你想要的:
var parts =
text
.Split(new string[] { "<p>" }, StringSplitOptions.None)
.SelectMany(x => new []
{
x,
"<p data-paragraph-id=\"" + Guid.NewGuid().ToString() + "\">"
})
.ToArray();
var result = String.Join("", parts.Take(parts.Length - 1));