Alle build-in Delphi Funktion wie PosEx findet sich eine sub-Zeichenkette beginnend von der Rückseite des Strings?

Gibt es eine Delphi-D2010-Funktion wie PosEx findet eine Teilzeichenfolge innerhalb einer Zeichenfolge vom Ende der Zeichenfolge?

Ich bin die Beseitigung aller Anrufe an die FastStrings Bibliothek und eine der Funktionen war ich mit war FastPosBack:

function FastPosBack(const aSourceString, aFindString : AnsiString; const aSourceLen, aFindLen, StartPos : Integer) : Integer;

Fand ich LastDelimiter aber es ist nicht ganz das gleiche, da es nur findet das Letzte Trennzeichen, und ich kann nicht geben Sie eine start-position.

Dank!

Update: Nach DR Kommentar, ich habe diese Funktion:

function FastPosBack(const aSourceString, aFindString : String; const aSourceLen, aFindLen, StartPos : Integer) : Integer;
var
  RevSourceString, RevFindString: string;
begin
  RevSourceString := AnsiReverseString(aSourceString);
  RevFindString := AnsiReverseString(aFindString);

  Result := Length(aSourceString) - PosEx(RevFindString, RevSourceString, StartPos) + 1;
end;

Gibt es eine effektive Möglichkeit, dies zu tun? Auf eine 1000000 loop, Pos 47ms dauert, während FastPosBack nimmt 234ms abgeschlossen.

  • Nur aus Neugier: wie lief dein test Aussehen genau?
  • Ich nenne GetTickCount, gefolgt von einer 1000000-Schleife der Aufruf an die Funktion und erhalten dann die Differenz, GetTickCount - TickCount.
  • Ich war mehr daran interessiert, was Zeichenfolgen, die Sie an die Funktionen für die Prüfung...
  • Für den SourceString "dfkfkL%&/s"#<.676505" und für den SearchString "#<". Ziemlich kleine Zeichenfolgen zu suchen.
  • Ich glaube nicht, dass alle, die Funktion kopiert den gesamten string kann als "schnell"
InformationsquelleAutor smartins | 2009-10-10
Schreibe einen Kommentar