Поиск числовых значений
Функция ищет все числовые значения в строках. Как сделать что бы функция искала только числовые значения длина которых равна = 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;