Moin Zusammen,
man kann das natürlich auch alles mit Pos, PosEx und Copy machen, läuft dann aber Gefahr strings oft in der Länge zu ändern, was, je nach Anzahl, auch auf die Performace drücken kann.
Ich würd's so lösen:
Delphi-Quellcode:
function RemoveBetween(const AsValue : string;const AOpenChar : char = '(';const ACloseChar : Char = ')') : string;
var
iIndexIn : Integer;
iIndexOut : Integer;
iState : Integer;
begin
SetLength(Result,Length(AsValue));
iIndexIn := 1;
iIndexOut := 0;
iState := 1;
while iIndexIn <= Length(AsValue) do begin
case iState of
1 : begin // Alles bis zum AOpenChar übernehmen
if AsValue[iIndexIn] <> AOpenChar then begin
Inc(iIndexOut);
Result[iIndexOut] := AsValue[iIndexIn];
end else begin
iState := 2;
end;
end;
2 : begin // Alles bis zum ACloseChar ignorieren
if AsValue[iIndexIn] = ACloseChar then begin
iState := 1;
end;
end;
end;
Inc(iIndexIn);
end;
SetLength(Result,iIndexOut);
end;