webForumDet fria alternativet

regexp'a text som slutar med radbrytning

.NET

5 svar · 266 visningar · startad av laidback

Medlem sedan maj 2001797 inlägg
Frågan#1

Ska göra en kontroll av ett textstycke för att göra om allt som börjar med http:// till länk automatiskt.

Det här funkar fint:

strText = Regex.Replace(strText, "(\bhttp://\S+|\bnews://\S+|\bftp://\S+)", "<a href=""$1"" target=""_blank"">$1</a>", RegexOptions.IgnoreCase)

MEN, bara om länken har ett mellanslag eller så efter sig. Skriver jag t ex:

Kolla in min länk!
http://www.aftonbladet.se

Kul va?!

Så blir länken <a href="http://www.aftonbladet.se" target="_blank">http://www.aftonbladet.se</a><br><br>K

Inte riktigt rätt. Hur avslutar man länken efter sista bokstaven, oavsett om det är ett blanksteg där eller inte?

Och eg. borde det väl bli en <asp:hyperlink... av det, men det kanske inte är så svårt att fixa iofs... :OO

Medlem sedan dec. 20025 483 inlägg
#2

Jag förstår inte. Om du skriver in

Kolla in min länk!
http://www.aftonbladet.se

Kul va?!

Hur vill du då att resultatet skall bli?

Medlem sedan maj 2001797 inlägg
#3

Ooops, jag var visst lite trött i går när jag skrev mitt inlägg. Sorry :r

Så här ska det stå:

Så blir länken <a href="http://www.aftonbladet.se" target="_blank">http://www.aftonbladet.se<br><br>K</a>

Alltså, radbrytningarna och första tecknet efter blir en del av länken, vilket jag misstänkte berodde på att det inte finns något blanksteg efter länken, utan en radbrytning.

/ska kanske inte skriva inlägg när jag är trött

Medlem sedan dec. 20025 483 inlägg
#4

\S matchar tecken andra än white space. I white space inkluderas såväl CR som LF, så om det textstycke du matchar mot ser ut enligt

Kolla in min länk!\nhttp://www.aftonbladet.se\n\nKul va?!

borde din kod fungera.

Du kan ju testa:

(\b(?:http|ftp|news):\/\/\S+)
Medlem sedan juni 2004533 inlägg
#5

Anledningen är att tecknen <, b, r och > alla ingår i \S. Istället för \S så får du använda en mängd som inte innehåller < och >, till exempel [\w\.\-\?+~%/#&!] eller [^ <>\r\n].

En <asp:hyperlink> har du inte så stor nytta av i en sträng. I så fall skulle du behöva kompilera strängen...

Medlem sedan maj 2001797 inlägg
#6

Åkej, tack båda två. Ska testa och ffa LÄSA PÅ om regular expressions.

257 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)