您的位置:首页 > 编程语言 > Delphi

自写的LastPos,寻找字符串里的最后一个字符,RTL里没有提供这个函数——Delphi的String下标是从1开始的

2015-12-02 23:34 423 查看
已经好几次了,没有这个函数还是感觉很不方便,所以自己写了一个:

function LastPos(strFind :string; ch: Char): integer;
var
i, n: integer;
begin
Result := -1;
if strFind='' then
begin
Exit;
end;
for i:=1 to Length(strFind) do
begin
if strFind[i]=ch then
Result := i;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
s1: String;
begin
s1 := 'abc';
ShowMessage(s1[1]);
ShowMessage(IntToStr(Length('/myaccount/save1/')));
ShowMessage(IntToStr(LastPos('/myaccount/save1/', '/')));
end;


当然,这里没有考虑效率和Unicode等问题,反正对D7比较好用。

另一个算法,看看别人怎么写的吧(倒序是非正常思路):

function LastPos(const S: string; C: Char): Integer;
var
i: Integer;
begin
i := Length(S);
while (i > 0) and (S[i] <> C) do
Dec(i);
Result := i;
end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: