Replace Problem

09/09/2009 - 14:07 von Thomas Hübner | Report spam
Hi NG,

Ich versuche mich immer noch an meinem Browsercontrol. Ziel ist es
sogen. Hashtags in einem Text aufzuspüren und in ein HTML Span Tag zu
packen. Nun kommt es aber zu Problemenn beim Replace. Durch die List
(Of String) im Bespiel unten filtere ich schon Doubletten aus der
Regex.MatchCollection aus - d.h. jeder Hashtag ist nur einmal in der
Liste. Probleme gibt es nun wenn ein Wort den Selben Wortanfang wie
ein Anderes Wort hat. Ich habe schon alles mögliche versucht drehe
mich aber irgendwie im Kreis. Sortieren der Liste bringt auch nichts
da dann die Wörter "zerrissen" werden. Das Beispiel unten in eine Sub
kopiert zeigt das Problem recht deutlich:

Dim sl As New List(Of String)
sl.AddRange(New String() {"#foobar", "#foo"})

Dim s As String = "#barfoo foobar #foobar #foo"
For Each ms As String In sl
s = s.Replace(ms, "<span>" & ms & "</span>")
Next

Debug.WriteLine(s)

'gewünschtes Ergebnis:
'#barfoo foobar <span>#foobar</span> <span>#foo</span>

'tatsàchliches Ergebnis
'#barfoo foobar <span><span>#foo</span>bar</span> <span>#foo</
span>

Hat jemand eine Idee?

Danke und Gruß,
Thomas
 

Lesen sie die antworten

#1 Thomas Hübner
09/09/2009 - 15:34 | Warnen spam
On 9 Sep., 14:07, Thomas Hübner wrote:
Hi NG,


Hat jemand eine Idee?

Danke und Gruß,
Thomas



Ich glaube ich habe selbst einen Ansatz gefunden über RegEx.Replace ob
das "save" ist muß ich in der Praxis testen.

Dim sl As New List(Of String)
sl.AddRange(New String() {"#foobar", "#foo"})

Dim s As String = "#barfoo foobar #foobar #foo"
For Each ms As String In sl
s = Regex.Replace(s, "\#\b" & ms.Substring(1) & "\b",
"<span>" & ms & "</span>")
Next

Debug.WriteLine(s)

Gruß,
Thomas

Ähnliche fragen