2017-03-15 8 views
-2

Ich habe E-Mail-Betreffzeilen und ich möchte Ticketreferenzen in ihnen finden es könnte die TT-Ref ist wie 12345678. Eine Betreffzeile (String) kann mehrere 8 Ziffern haben Zahlen!Lazarus-Funktion, um 8-stellige Zahlen in einer Zeichenfolge zu finden

Ich war den Code unten verwenden, aber es ist nur die ersten 8 Ziffern Strippen dann einen Scheck zu tun, wenn die 8 Zeichen lang ist:

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; 

Beispiel:

meines String-Variable ist

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

Funktion GetTTRefs(subject)"12345678;87654321;" führen sollte

Vielen Dank für die Antworten.

+0

Dieser Code löscht * die ersten 8 Ziffern * nicht. Es streift nichts ab und es sammelt einfach alle Ziffern der Zeichenkette; es hört nicht bei 8 auf, sondern sammelt von Null bis zu unbegrenzten Ziffern. Du wirst klarer sein müssen, was du verlangst. –

+0

@ ken-white ich weiß, dass es nur alle Nicht-Ziffern-Zeichen aus einer Zeichenfolge entfernt, und ich überprüfe danach, ob das Ergebnis 8 Ziffern lang ist. Ich habe ein Beispiel hinzugefügt. – modzsi

Antwort

-2
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; 
+0

Das ist ziemlich schlecht. Sie sollten die Zeichen der Zeichenkette durchlaufen, indem Sie die Array-Indizierung '[i]' nach den Werten '> = '0'' und' <=' 9'' suchen. Auf diese Weise müssen Sie keine Heap-Zuweisung durchführen, bis Sie einen Wert gefunden haben. –

+0

danke David, ich habe das jetzt basierend auf deinem Vorschlag neu geschrieben. – modzsi

Verwandte Themen