pos函数使用的问题
pos函数可取出子串在父串中第一次出现的位置,怎样取出子串在父串中最后一次出现的位置?
[解决办法]
循环pos ,每pos一次删掉开始到pos位置的字串,继续pos一直到字串结尾然后最后pos到的就是你需要的
[解决办法]
如果要查找最后一个位置,查找可以从头到尾查,效率会低些,不用DELPHI的,用POSEX就可以,查找后把查找点往后推就可以
从尾往头查,也可以
顺手给楼主写了个函数,参数VCL 中POSEX改写的, 简单测试了几个没发现问题,如果有什么问题,麻烦告诉我
function PosExFromEnd(const SubStr, S: string): Integer;var I,X: Integer; Len, LenSubStr: Integer;begin I := Length(S); LenSubStr := Length(SubStr); Len := Length(S) - LenSubStr + 1; while Length(S) - I <= Len do begin if S[I] = SubStr[LenSubStr] then begin X := 1; while (X < LenSubStr) and (S[I - X] = SubStr[LenSubStr - X]) do Inc(X); if (X = LenSubStr) then begin Result := I - LenSubStr + 1; exit; end; end; Dec(I); end; Result := 0;end;procedure TForm1.FormCreate(Sender: TObject);begin ShowMessage(IntToStr(PosExFromEnd('23', '123512156234567')));end;