Hatte noch nen SetLength am Ende vergessen und mir ist wohl ein -1 bei der Schleife reingerutscht. So funktioniert es und ist sogar noch schneller als DeddyHs Version:
Delphi-Quellcode:
function RemoveCharsFromString(const AStr: String; CharsToRemove: TSysCharSet): string;
var
I, J: Integer;
begin
SetLength(Result, Length(AStr));
J := 1;
for I := 1 to Length(AStr) do
begin
if (not (AStr[I] in CharsToRemove)) then
begin
Result[J] := AStr[I];
J := J + 1;
end;
end;
SetLength(Result, J - 1);
end;
100MiB String mit 2 Ersetzungen:
Code:
Zacherl : 641
DeddyH : 1578