Wyrażenia regularne i zamiana URL
Strona [ 1 ] z 1
| inaudi |
10-03-2010 10:03 |
|
Użytkownik Status: Offline Dołączył: 12-01-2010 |
Witam, mam taki problem, mam ciąg postaci http://www.strona1.plhttp://strona2.pl&2hsj kl2po;http://strona3.pl chciałbym zamienić ten ciąg na klikalne linki, tak aby otrzymać w wyniku 3 linki do stron, czy ma ktoś pomysł jak to rozwiązać? Znalazłem takie rozwiązanie: Regex.Replace(ciagWejsciowy, @"(\bhttps?://[^;]+\b)", @"<a href=""$0"">$0</a>") jednak tutaj znakiem który musi rozdzielać poszczególne adresy jest ";", a chciałbym zrobić tak aby nie odgraniczać żadnym znakiem poszczególnych adresów, tylko każdy zaczynający się od "http://" traktować jako osobny. Będę niezmierni wdzięczny za wszelką pomoc. Pozdrawiam. |
|
|
| ŁF |
10-03-2010 13:58 |
|
Moderator Status: Offline Dołączył: 10-10-2002 |
w eclipse działa taki regexp: (http\:\/\/.*?)(?=http)|(http\:\/\/.*$) widzę jeden problem - co zrobisz, kiedy po linku będzie tekst? skąd będziesz wiedział, że link się skończył i teraz jest już tylko tekst? my programs never have bugs, they just develop random features.
|
|
|
| inaudi |
10-03-2010 14:21 |
|
Użytkownik Status: Offline Dołączył: 12-01-2010 |
właśnie tu jest problem, chciałbym osiągnąć efekt w którym nowy link byłby brany od wystąpienia znaków "http://" a co będzie dalej już mnie nie interesuje, więc całość aż do wystąpienia kolejnego "http://" zamieniam na linka, zakładam że takie coś da się zrobić, ale pomimo wielu rozwiązań do podobnych problemów nie znalazłem takiego do mojego przypadku. |
|
|
| ŁF |
10-03-2010 14:59 |
|
Moderator Status: Offline Dołączył: 10-10-2002 |
no to podałem Ci rozwiązanie, nawet jeśli regexp pod .net ma nieco inną składnię, to zasada zostaje identyczna. my programs never have bugs, they just develop random features.
|
|
|
| inaudi |
10-03-2010 15:05 |
|
Użytkownik Status: Offline Dołączył: 12-01-2010 |
Super, działa. Dzięki wielkie, myślałem że skoro zaznaczyłeś że działa w Eclipse to tylko w Eclipse:) Pozdrawiam! |
|
|
| MSM |
10-03-2010 16:24 |
|
Użytkownik Status: Offline Dołączył: 24-04-2009 Skąd: Google Search |
Regexy są podobne we wszystkich językach programowania. Dlatego warto się ich uczyć, a nie kombinować z Substringami i IndexOf czy podobnymi, bo wielu tak robi... #define private public // beware classes, I`m coming!
|
|
|
| ŁF |
10-03-2010 22:33 |
|
Moderator Status: Offline Dołączył: 10-10-2002 |
regexp jest znacznie wolniejszy od wielu indexof/substring... my programs never have bugs, they just develop random features.
|
|
|
| MSM |
11-03-2010 16:40 |
|
Użytkownik Status: Offline Dołączył: 24-04-2009 Skąd: Google Search |
(znowu odpowiadam z opóźnieniem, sorry) regexp jest znacznie wolniejszy od wielu indexof/substring... Ja nie mówię żeby nie używać indexOf/Substring, ale widziałem wiele rozwiązań wykonujących skomplikowane modyfikacje ciągów za pomocą powyższych (w tym najlepsze moje - kiedy sobie przypomnę metodę posiadającą coś koło 8-9 (!) zagnieżdżonych pętli i if-ów, dwoma goto (!!), zajmującą jakieś 1.5 strony w IDE (!!!) - i pewnie to wszystko się dało zrobić jednym, dwoma regexami...) to ogarniają mnie koszmary. #define private public // beware classes, I`m coming!
|
|
|
|
|
|
Strona [ 1 ] z 1
| 1 użytkownik(ów) przegląda ten temat (1 gości) |
|---|
| (żadnych zarejestrowanych użytkowników) |











