Erster Versuch, der DEUTLICH schneller ist, als alle anderen bisher geposteten Lösungen:
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;
Getestet mit einem 256KiB großen Zufallsstring (bestehend aus 'a'..'z') und CharsToRemove mit 'a' und 'z':
Code:
mm1256 : 656ms
Popov : 1359ms
Zacherl1: 0ms