@matze: Die Variante würde ich eher nicht nehmen da sich die Länge vom String ständig ändert was ein umerhkopieen des Speichers zu Folge hat. Bei einigen Memorymanagern (zum Beispiel dem von Delphi7) wird dadurch der Speicher arg fragmentiert und irgendwann kommt die Meldung das kein Speicher mehr zur Verfügung steht weil nicht genügend zusammenhängender Speicher da ist.
Folgende Variante hätte ich noch:
Delphi-Quellcode:
function RemoveNonNumeric(AStr: String): String;
var
lCount,
lPos : Integer;
begin
lPos := 1;
for lCount := 1 to Length(AStr) do
begin
if (AStr[lCount] in ['0'..'9', '.', ',']) then
begin
AStr[lPos] := AStr[lCount];
inc(lPos);
end;
end;
result := copy(AStr, 1, lPos - 1);
end;