文字列の末尾から始まる文字列内の部分文字列を見つける PosEx のような Delphi D2010 関数はありますか?
FastStrings ライブラリへのすべての呼び出しを削除しています。使用していた関数の 1 つは FastPosBack でした。
function FastPosBack(const aSourceString, aFindString : AnsiString; const aSourceLen, aFindLen, StartPos : Integer) : Integer;
LastDelimiter を見つけましたが、最後の区切り文字しか見つからず、開始位置を指定できないため、まったく同じではありません。
ありがとう!
更新: DR コメントに続いて、この関数を作成しました。
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;
これを行うより効果的な方法はありますか?1000000 ループ サイクルでは、Pos は 47 ミリ秒、FastPosBack は 234 ミリ秒で完了します。