2016-10-09 1 views
0

Ich habe etwas Text in einer Zeichenfolge. Ich möchte zwei bestimmte Wörter in der Zeichenfolge finden und diese Wörter mit einem <b>-Tag umbrechen.
Ich habe versucht, so etwas wie dieses, aber es funktioniert nicht:Wrap Tag um bestimmte Wörter in String

for (int i = 0; i < bold.Split(' ').Count(); i++) 
{ 
    if (myString.Split(' ')[i].Contains("MyWord")) 
     myString.Split(' ')[i] = "<b" + myString.Split(' ')[i] + "</b"; 
} 

Und ebenso wenig wie folgt aus:

if (myString.Contains("MyWord")) 
    myString = myString.Replace("MyWord", "<b>MyWord</b>"); 
+0

Im ersten Fall erfolgt die Zuweisung auf einem frischen neuen Array, das durch Aufteilen erhalten wurde. Sie sollten das in einer Anfangsvariablen speichern und dann die Zuweisung vornehmen. Aber es ist eine schlechte aproach tbh. Die zweite ist besser und es sollte funktionieren. Wie hast du es getestet? – Cosu

+1

Was ist das Problem genau? Das zweite Beispiel funktioniert, können Sie uns ein konkretes Beispiel für die Zeichenfolge zeigen, nach der Sie suchen? –

+2

Ich sehe nichts falsches mit dem zweiten Beispiel. Was ist das Ergebnis, das Sie erhalten und was erwarten Sie? Übrigens brauchen Sie das 'if' nicht, wenn Sie' Replace' verwenden, wird es nur ersetzt, wenn es die Suche enthält und dupliziert. –

Antwort

1

Verwendung Regex alle Instanzen einer Teil zu ersetzen.

Regex.Replace(myString, @"MyWord", "<b>MyWord</b>");

2

Der zweite Ansatz bricht, wenn MyWord Teil eines längeren Wortes ist - ein clbuttic problem. Sie können es mit Regex vermeiden:

myString = Regex.Replace(myString, @"\bMyWord\b", "<b>MyWord</b>"); 

\b Markierungen sicherzustellen, dass MyWord darf nicht Teil eines längeren Wortes sein.

+0

Was ist 'MyWord.a' Punkt 'nach dem Wort, wenn es das letzte Wort des Satzes ist –