Pobieranie tekstu z tekstu

0

Witam,

Mam ogromne pytanko ponieważ robię sobie programik i zatrzymałem się w jednym kluczowym miejscu i nie wiem już gdzie znaleźć rozwiązanie.

Otóż potrzebuje pobrać tekst z tekstu np:

</a>
Aktualna cena: 100,00 zł

</a>
Cena Kup Teraz: 1 049,00 zł

i teraz jak pobrać tekst pomiędzy </a>
.........
??

Przeszukałem google ale nie potrafię nic znaleźć, dlatego proszę o pomoc może jest jakiś komponent albo już ktoś napisał kod do pobierania w ten sposób?

0

Kolego.. w tym przypadku najłatwiej po prostu wyciąć te niepotrzebne tagi z przodu i tyłu stringa.

usuniecie z lewej to

string := Delete (string, 1, 8);
//gdzie 8 to liczba znakow ktore chcesz wyciać (nie chce mi sie tych znakow w tych tagach liczyc)

natomiast wyciecie z prawej to cos na ksztalt
string := Delete(string, Length(string) - 4, 5);
// gdzie 4 to dlugosc tego taga z prawej podobnie jak 5.. Tam musisz pokombinowac z tymi dlugosciami

Ogolnie popatrz na to:
http://4programmers.net/Delphi/%C5%81a%C5%84cuchy/Operacje

0

tak rozumiem tyle że to nie jest takie łatwe jeżeli teksty:

</a>
Aktualna cena: 100,00 zł

</a>
Cena Kup Teraz: 1 049,00 zł

są już w jakimś tekście. Rozchodzi mi się o to czy ktoś wie jak wyciągnąć tekst mając np string: asdfghjkl i teraz pobrać tekst od litery s do j oczywiście nie poprzez użycie COPY :)

0

To skorzystaj z potężnego narzędzia jakim są wyrażenia regularne. Z poniższej strony pobierasz moduł, z
przykładami i dokumentacją http://regexpstudio.com/TRegExpr/TRegExpr.html - wypakowujesz regexpr i
dodajesz go do sekcji uses, a resztę załatwi taki poniższy kod (to dla podanego przez Ciebie przykładu):

function WyodrebnijTekst(const AInputString: string): string;
var
  R : TRegExpr;
  TekstRE : string;
begin
  Result := '';
  R := TRegExpr.Create;
    try
      TekstRE :=  '</a><br /> (.+?)<br />';
      R.Expression := TekstRE;
      if R.Exec(AInputString) then
         repeat
         Result := Result + R.Match[1] + #13#10;
         until not R.ExecNext;
    finally
    R.Free;
   end;
end;

Przykład użycia:

  Memo2.Text := WyodrebnijTekst(Memo1.Text);
0

dzięki to jest właśnie to czego szukałem :D

0

Po co zaraz obcinać i używać do tego wyrażeń regularnych których definiowania nie każdy zna.

Najprościej jest użyć PosEx

uses 
 StrUtils

var
 i: Byte;
 s: String;
begin
 s := '</a><br /> Aktualna cena: 100,00 zł<br />'; //twój tekst
 i := Pos('<br /> ', s) + 7;  //pozycja pierwszego znacznika
 Label1.Caption := Copy(s, i, PosEx('<br />', s, i) - i);  //skopiowanie tego co cie interesuje czyli "Aktualna cena: 100,00 zł"
end;

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