Wyodrębnianie adresów www...

0

Witanko
Pisze chatka, jest on juz w sumie skonczony...ale pozostal mi problemik zwiazany z adresem www.wp.plzi dokladnie o cos takiego:
Mam stringa o takim tekscie:
tekst bleble www.wp.pl znowu tekst... www.onet.pl blebleble www.interia.pl

zrobilem pętelke ktora mi wyodrebnia te adresy i po niej tekst wygląda tak:

tekst bleble www.wp.pl znowu tekst... www.onet.pl blebleble www.interia.pl

jednak nie jest ona doskonala i dziala poprawnie tylko wtedy gdy przed adresem wstawie:
a jesli dam to wtedy sie wszytsko chrzani... oto kodzik tej pętelki jesli ktos by znal jakies lepsze rozwiazanie to z gory dzieki. pozdrowka

var
pocz,kon:integer;
a,b,i,p,k:integer;
s,adres,c,c2,c3,pp,kk:string;
begin
pocz:=0;
i:=0;
s:='tekst bleble www.wp.pl znowu tekst... www.onet.pl blebleble www.interia.pl ';

repeat

c:=Copy(s,pocz,length(s)-pocz);
a:=pos('www',c);

c3:=Copy(s,pocz+a+1,length(s)-pocz);

c:=Copy(s,pocz,length(s)-pocz);
a:=pos('www',c);

if i=0 then
begin
c2:=Copy(s,pocz+a,length(s)-pocz);
end else
begin
c2:=Copy(s,pocz+a-1,length(s)-pocz);
end;

c3:=Copy(s,pocz+a,length(s)-pocz);

b:=pos(' ',c2);
adres:=Copy(c2,0,pos(' ',c3));
p:=pos(adres,s);
pp:='';
kk:='';
insert(pp,s,p);
if i=0 then
begin
insert(kk,s,p+Length(adres)+Length(pp)-1);
end else
begin
insert(kk,s,p+Length(adres)+Length(pp));
end;

Memo1.Text:=s;
pocz:=pocz+b+a;
i:=i+1;
c:=Copy(s,pocz,length(s)-pocz);
a:=pos('www',c);
until a=0;
end;

0

Podam algorytm:

  1. Wyszukujesz w tekscie fragmentów http:// lub www etc.
  2. Wyodrębniasz całe słowo POSem wyszukując spacje otaczające wyraz.
  3. Zamieniasz to na Adres
  4. Umieszczasz w stringu.
0

Zrobilem to Od razu po dodaniu postu bo jakies oswiecenie we mnie wstpilo :d :d :d Ale dzieki za chec pomocy....ponizej jest kodzik jaki zrobilem do tego celu....

var
P,K,adr,PP,KK:string;
pocz:integer;
begin
P:='tekst... www.wp.pl znowu tekst... www.onet.pl bleble';
repeat
pocz:=pos('www',P);
K:=K+Copy(P,0,pocz-1);
Delete(P,1,pocz-1);
adr:=Copy(P,0,pos(' ',P));
/////
PP:='';
KK:='';
Insert(KK,adr,Length(adr));
Insert(PP,adr,0);
/////
K:=K+adr;
Delete(P,1,pos(' ',P));
until pos('www',P)

1 użytkowników online, w tym zalogowanych: 0, gości: 1