是否有类似于 PosEx 的函数可以在 Delphi D2010 中查找从字符串结尾处开始的子字符串?
我正在移除对 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毫秒才能完成。