Hi,
ich habe aus Interesse eben diese kleine Funktion geschrieben:
Delphi-Quellcode:
procedure findnumlength(input: string; output: TStrings; numlength: integer=32);
var
i,j: integer;
inputlen: integer;
begin
inputlen := length(input);
i := 1;
while i <= inputlen do
begin
// die nächsten 32 Stellen prüfen
j := 0;
while (i+j<=inputlen) and (input[j+i] in ['0'..'9']) and (j<numlength) do
inc(j);
// Wenn alle 32 Stellen eine Ziffer waren, Zahl hinzufügen
if j = numlength then
begin
output.Add(copy(input,i,numlength));
end;
// Vorspulen bis zur nächsten Zahl:
while (not (input[i+j] in ['0'..'9'])) and (i+j<=inputlen) do
inc(j);
// zur nächstmöglichen Stelle Springen
inc(i,j);
end;
end;
Sie findet alle Zahlen mit x Stellen im "input"-String und gibt sie in "output" aus. Bei meinen Tests hat sie jedenfalls funktioniert. Wenn eine Zahl mehr Stellen als x Stellen hat, werden die ersten x Stellen gefunden. Ich hoffe man versteht den Satz trotz der ganzen Ixxe^^
Wenn die Stellenanzahl genau stimmen muss, also danach keine weiteren Zifefrn folgen müsste es wahrscheinlich reichen, bei "while (i+j<=inputlen) and (input[j+i] in ['0'..'9']) and (j<numlength) do" das " and (j<numlength)" wegzulassen.