2017-04-13 2 views
2

Sagen, ich habe einen Text wie folgt aus:C# Regex.Replace Groß- und Kleinschreibung als Funktion des Spiels

string text = "Hello world! hElLo world!"; 

ich ein span-Tag um jedes der Wörter ‚hallo‘ in einem Fall unempfindlich Weise hinzufügen möchten so dass das Ergebnis ist folgendes:

string text = "<span>Hello</span> world! <span>hElLo</span> world!"; 

ich habe versucht, das wie so mit Regex.Replace zu tun:

Regex.Replace(text, "hello", "<span>hello</span>", RegexOptions.IgnoreCase); 

Aber was ich rea lly need ist nur die span-tags erstellt werden, lassen die ursprüngliche gehäuse allein. Daher müsste die Ersetzungsphrase eine Funktion der übereinstimmenden Phrase sein. Wie kann ich das machen?

+1

Das ist nicht 'string.Replace'. – juharr

+0

Sorry, sollte gerade bearbeitet – user3685285

Antwort

7

Anstatt die hello im Ersetzungsmuster fest zu codieren, verwenden Sie eine $& Rückverweisung auf den gesamten Übereinstimmungswert.

ersetzen "<span>hello</span>" mit "<span>$&</span>" verwenden

var replaced = Regex.Replace(text, "hello", "<span>$&</span>", RegexOptions.IgnoreCase); 

Sehen Sie mehr über Ersatz Rückreferenzierungen in Substitutions in Regular Expressions.

+0

sein ... ersetzen "Hallo" mit " $ &" – AgapwIesu

+0

@AgapwIesu bedeutet Er ersetzt ' " hallo "' mit '" $ &"' in dem Code, nicht wörtlich Verwenden Sie beide im Aufruf "Ersetzen". – juharr

+0

Ja, 'var ersetzt = Regex.Replace (Text," Hallo "," $ & ", RegexOptions.IgnoreCase);' –

Verwandte Themen