2017-01-13 6 views
-7

Wie kann ich die folgende Zeichenfolge aus diesem ersetzen:Regex ersetzen String im Format @ ... @ .... @

"Hello @[email protected]@, my name is @[email protected]@." 

Um

"Hello <span>@[email protected]@</span>, my name is <span>@[email protected]@</span>." 

Es gibt eine große Anzahl von Anwendungsvariable @[email protected]@.

+6

Was haben Sie versucht? Sie sollten sich zuerst selbst versuchen und den Code zeigen, wo Sie stecken geblieben sind. ** Sie sollten nicht Regex für diese verwenden **, verwenden Sie "String.Replace". Regex macht das Debuggen sehr kompliziert. Regex ist die letzte Option in der Liste der 1000 –

+1

Bitte zeigen Sie uns Ihren Code. Wir werden Ihre Regex überprüfen und helfen, es zu beheben oder alternative Lösung zu bieten –

+0

@JeroenvanLangen Ok, wie würden Sie String.Replace verwenden, gibt es Bewegung Anwendungsvariable ich sollte die Frage hinzufügen. Ich kenne nicht alle Anwendungsvariablen – Valter

Antwort

-1

Sie das Muster verwenden können:

@[A-Za-z][email protected][A-Za-z][email protected] 

Und ersetzen Sie es wie:

string input = "Hello @[email protected]@, my name is @[email protected]@."; 

string result = Regex.Replace(input, "@[A-Za-z][email protected][A-Za-z][email protected]", match => "<span>" + match.Value + "</span>"); 

Beachten Sie, dass, wenn die Spiele immer in der Form sind:

@[email protected][A-Za-z][email protected] 

Als @ WiktorStribiżew Kommentare, die Sie auch die ersetzen auszuführen $& Rückreferenzierung verwenden können: @[email protected]@ Sie die Regex verwenden können

Regex.Replace(input, "@[A-Za-z][email protected][A-Za-z][email protected]", "<span>$&</span>"); 
+0

dies unterscheidet sich von meiner Antwort wie? du hast sogar die Variablennamen kopiert ... – fubo

+0

@fubo Eingabe und Ergebnis sind gebräuchliche Namen für so etwas. Meiner erlaubt ein gemeinsames Format I, e, '@ ... @ ... @', während deins für mehrere '@' s erlaubt, dh '@ .. @ ... @ ... @' und ich habe auch zur Verfügung gestellt eine alternative Lösung für das spezifische Format, dh '@ app @ something @' – TheLethalCoder

+0

@fubo Oh und meins erlaubt für Großbuchstaben, während Ihr scheint, nur Kleinbuchstaben zu sein. Wenn du ein Problem mit Leuten hast, die _similar_ Antworten schreiben, nimm es zu meta. – TheLethalCoder

6

Dieser Code setzt <span></span> Tags um jede Variable.

string input = "Hello @[email protected]@, my name is @[email protected]@."; 
string result = Regex.Replace(input, "[@][[email protected]]+[@]", s => "<span>" + s.Value + "</span>"); 

UPDATE:

als Wiktor Stribiżew erwähnt, gibt es auch einen kürzeren Weg, es zu schreiben:

string result = Regex.Replace(input, "[@][[email protected]]+[@]", "<span>$&</span>"); 
+1

Ich denke, in OPs Fall sollte '@ app @ \ w + @' oder '@ app @ [a-zA-Z] + @' auch funktionieren, je nachdem, was er zu tun versucht. – devRicher

+0

Warum einen Match-Evaluator verwenden? Es gibt '$ &' Rückverweis. 'Regex.Replace (Eingabe," [@] [a-z @] + [@] "," $ & ");' –