Lazarus 函数在字符串中查找 8 位数字

Lazarus function to find 8 digit numbers in a string

我有电子邮件主题行,我想在其中找到机票参考,TT 参考可能是 12345678。一个主题行(字符串)可以有多个 8 位数字!

我一直在使用下面的代码,但它只是去掉了 前 8 位数字,然后检查它是否为 8 个字符长:

function StripNumbers(const aString: string): string;
var
  C: char;
begin
  Result := '';
  for C in aString do
  begin
    if CharInSet(C, ['0'..'9']) then
    begin
      Result := Result + C;
    end;
  end;
end;   

示例:

我的字符串变量是

subject := "yada yada XF12345678 blabla XF87654321 duh XF11.223344"

函数GetTTRefs(subject)应该得到"12345678;87654321;"

感谢您的回答。

function GotTTRefs(Subject:string;Digits:Byte):string;
var
  i:integer;
  TT:string;
begin
   i:=1;
   while i <= Length(Subject)-Digits+1 do
   begin
     if Subject[i] in ['1'..'9'] then
        begin
          TT:=Copy(Subject,i,Digits);
          if (StrToQWordDef(TT, 0) <> 0) then
              Result:=Result+TT+';';
        end;
     inc(i);
   end;
end;