2012-11-17 4 views
5

Ich habe Array von Zeichenfolgen und ich muss Hyperlink zu jeder einzelnen Übereinstimmung von Element in Array und gegebener Zeichenfolge hinzufügen. Prinzipiell etwas wie in Wikipedia.Wie programmatisch HTML-Text mit Hyperlinks wie in Wikipedia machen?

Etwas wie:

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

{   } 

string p = "The Domesday Book records the manor of Greenwich as held by Bishop Odo ofBayeux; his lands were seized by the crown in 1082. A royal palace, or hunting lodge, hasexisted here since before 1300, when Edward I is known to have made offerings at the chapel of the Virgin Mary.";

arrayofstrings = {"Domesday book" , "Odo of Bayeux" , "Edward"}; 

returned string = @"The <a href = "#domesday book">Domesday Book</a> records the manor ofGreenwich as held by Bishop <a href = "#odo of bayeux">Odo of Bayeux</a>; his lands wereseized by the crown in 1082. A royal palace, or hunting lodge, has existed here sincebefore 1300, when <a href = "#edward">Edward<a/> I is known to have made offerings at thechapel of the Virgin Mary.";

Was ist der beste Weg, dies zu tun?

+1

Wikipedia tut das nicht automatisch. Sie müssen angeben, wo sich die Links befinden, auch wenn Sie ein einfaches, spezifisches Markup anstelle von vollständigem HTML ausführen können. – GolezTrol

Antwort

5

Sie wahrscheinlich recht könnte leicht tun es wie folgt aus:

foreach(string page in arrayofstrings) 
{ 
    p = Regex.Replace(
     p, 
     page, 
     "<a href = \"#" + page.ToLower() + "\">$0</a>", 
     RegexOptions.IgnoreCase 
    ); 
} 
return p; 

Wenn die Aktivierung des Ankers gleich der angepassten Text sein können, können Sie auch von der for-Schleife loszuwerden:

return Regex.Replace(
    p, 
    String.Join("|", arrayofstrings), 
    "<a href = \"#$0\">$0</a>", 
    RegexOptions.IgnoreCase 
); 

Jetzt wird das Muster , Übereinstimmungen werden unabhängig von der Groß-/Kleinschreibung gefunden, und was auch immer gefunden wird, wird sowohl in den Link-Text als auch in das href-Attribut zurückgesetzt.