C# 如何像在维基百科中那样用超链接编程生成html文本?

C# 如何像在维基百科中那样用超链接编程生成html文本?,c#,regex,string,C#,Regex,String,我有一个字符串数组,我必须将超链接添加到数组中每一个匹配项和给定字符串中。 基本上类似于维基百科 比如: private static string AddHyperlinkToEveryMatchOfEveryItemInArrayAndString(string p, string[] arrayofstrings) { } string p=“Domesday Book记录了巴约的奥多主教所持有的格林威治庄园;他的土地于1082年被国王没收。1300年以前,爱德华

我有一个字符串数组,我必须将超链接添加到数组中每一个匹配项和给定字符串中。 基本上类似于维基百科

比如:

private static string AddHyperlinkToEveryMatchOfEveryItemInArrayAndString(string p, string[] arrayofstrings)

{            }
string p=“Domesday Book记录了巴约的奥多主教所持有的格林威治庄园;他的土地于1082年被国王没收。1300年以前,爱德华一世在圣母玛利亚教堂献祭时,这里就存在着皇宫或狩猎小屋。”

return string=@“记录了主教所持有的格林威治庄园;他的土地于1082年被国王没收。1300年以前,爱德华一世在圣母玛利亚礼拜堂供奉祭品时,这里就存在着皇宫或狩猎小屋。”


这样做的最佳方式是什么?

您可能很容易做到:

foreach(string page in arrayofstrings)
{
    p = Regex.Replace(
        p, 
        page, 
        "<a href = \"#" + page.ToLower() + "\">$0</a>", 
        RegexOptions.IgnoreCase
    );
}
return p;
foreach(数组中的字符串页)
{
p=正则表达式。替换(
P
页
"", 
RegexOptions.IgnoreCase
);
}
返回p;
如果锚定的大小写可以与匹配的文本相同,您甚至可以去掉for循环:

return Regex.Replace(
    p,
    String.Join("|", arrayofstrings),
    "<a href = \"#$0\">$0</a>",
    RegexOptions.IgnoreCase
);
返回正则表达式。替换(
P
String.Join(“|”,ArrayOfString),
"",
RegexOptions.IgnoreCase
);

现在模式变成了
Domesday book | Odo of Bayeux | Edward
,匹配项不考虑大小写,找到的内容都会放回链接文本和
href
属性中。

维基百科不会自动执行任何操作。您必须指定链接的位置,即使您可以通过简单、特定的标记而不是完整的HTML来指定。
return Regex.Replace(
    p,
    String.Join("|", arrayofstrings),
    "<a href = \"#$0\">$0</a>",
    RegexOptions.IgnoreCase
);