是否有任何 Delphi D2010 函数(如 PosEx)从字符串末尾开始在字符串中查找子字符串?
我正在删除对 FastStrings 库的所有调用,我使用的函数之一是 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 毫秒才能完成。