Поиск числовых значений

Функция ищет все числовые значения в строках. Как сделать что бы функция искала только числовые значения длина которых равна = 5.

То есть строка состоит из:

12345 FC-text212 12345FC-text212

На выходе нужно получить:

12345
12345

Функция:

function StripNonConforming(const S: string;
  const ValidChars: TCharSet): string;
var
  DestI: Integer;
  SourceI: Integer;
begin
  SetLength(Result, Length(S));
  DestI := 0;
  for SourceI := 1 to Length(S) do
    if S[SourceI] in ValidChars then
    begin
      Inc(DestI);
      Result[DestI] := S[SourceI]
    end;
  SetLength(Result, DestI)
end;

Пыталась сделать вот так:

if Length(S) = 5 then

Но результат не отображается...

Использую функцию вот так:

Memo2.Text := StripNonConforming(S1, ['0'..'9']);

Ответы (1 шт):

Автор решения: MBo
procedure Extract5Digits(const s: string; res: TStrings);
var
  i: integer;
  start: integer;
begin
  res.Clear;
  start := -1;
  for i := Low(s) to High(s) do
    if (s[i] in ['0'..'9']) then begin
      if start < 0 then
      start := i;
    end else begin
      if (start > 0) and (i - start = 5) then
        res.Add(Copy(s, start, 5));
      start := -1;
    end;
  if (start > 0) and (Length(s) - start = 4) then
        res.Add(Copy(s, start, 5));
end;
→ Ссылка