Problem
Es sollen alle Vorkommnisse eine Start- und End-Tags gefunden werden und der Text dazwischen verarbeitet werden.
Ansatz – Approach
Verwendung von regulären Ausdrücken:
Regex.Matches findet alle Auftreten anhand eines Patterns, was den Regulären Ausdruck definiert:
(diagram://{[^>]+})
Eine Funktion string replaceDiagramAndElementLinkURLs(string eaNoteString) baut einen neuen String zusammen und schickt ihr wieder zurück.
Lösung – Solution
Im folgenden Beispiel gibt es in einem String mehrere Vorkommnisse des Start-Tags „$diagram://{“ und dem End-Tag „}“.
Zwischen dem Diagramm steht eine Nummer (guid) die an eine aspx-Seite übergeben werden soll.
Z.B. lautet der String
string verarbeiten = @" <html> ... Dies ist ein Diagramm: <a href="$diagram://{1234465}">Link 1</a> hier steht noch ein Diagramm: <a href="$diagram://{3455565}">Link 2</a> und das führt sich fort.. ... </html> ";
und nach dem Verarbeiten ist der Inhalt:
string verarbeiten = @" <html> ... Dies ist ein Diagramm: <a href="Level2Process.aspx?map=1234465">Link 1</a> hier steht noch ein Diagramm: <a href="Level2Process.aspx?map=3455565">Link 2</a> und das führt sich fort.. ... </html> ";
Dazu kann man folgenden Regulären Ausdruck verwenden:
public static string replaceDiagramAndElementLinkURLs(string eaNoteString) { string neuerString = eaNoteString; string pattern = @"(diagram://{[^>]+})"; MatchCollection matches = Regex.Matches(neuerString, pattern); if (matches.Count > 0) { foreach (Match m in matches) { string toReplace = "$" + m.Groups[1].ToString(); string guid = toReplace.ToString().Replace("$diagram://", ""); neuerString = neuerString.Replace(toReplace, "Level2Process.aspx?map="+guid ); } } return neuerString; }