Witam !
Poszukuję prostego parsera który będzie wyduszał z pośród dwóch znaczników tekst.
Podaję przykład <>tekst który chcę otrzymać po wyduszeniu</>
czyli mam otrzymać "tekst który chcę otrzymać po wyduszeniu".
0
0
function CopyEx(const s: string; const Start: Byte; const Stop: Byte): string;
begin
if Length(s) < Start then Exit;
if Length(s) < Stop then Exit;
Result := s;
Delete(Result, Stop, Length(s));
if Start > 1 then Delete(Result, 1, Start);
end;
//wykorzystanie
a := '<>tekst który chcę otrzymać po wyduszeniu</>';
b := CopyEx(a, Pos('<>', a) + 1, Pos('</>', a));
0
Jest w tym pewna wada jeżeli dam np.znaczniki z tekstem w środku <lokalizacja>jcjucuhh</lokalizacja> to otrzymuję okalizacja>jcjucuhh.
Opi ratuj.
Z góry wielkie dzięki.
0
Ech tylko trochę pomyśleć...
function ExtractString(inStr, sTag, eTag: string): string;
var
p: Integer;
begin
result:= '';
p:= Pos(sTag, inStr);
if (p < 1) then exit;
p:= p + Length(sTag) - 1;
Delete(inStr, 1, p);
p:= Pos(eTag, inStr) - 1;
if (p < 1) then exit;
result:= Copy(inStr, 1, p);
end;
//wywołanie
s:= ExtractString('<tag>Testowy napis</tag>', '<tag>', '</tag>');