比如有一串/d/ew/h.fff
我要取/在这串字符的最后位置

解决方案 »

  1.   


    var
      s:string;
      i:integer;
      x:integer;
    begin
      s:='/d/ew/h.fff';
      for i:=length(s) downto 1 do
        if s[i]='/' then
           x:=i;
      

  2.   

    改一下procedure TForm1.Button1Click(Sender: TObject);
    var
      s:string;
      i:integer;
      x:integer;
    begin
      s:='/d/ew/h.fff';
      for i:=length(s) downto 1 do
        if s[i]='/' then
        begin
           x:=i;
           break;
        end;
      showmessage(inttostr(x));
    end;
      

  3.   


    function FindPosition(s: string; FindChar: Char; var Position: Integer): Boolean;  //s: '/d/ew/h.fff'    FindChar: '/'
    begin
      Result := false;
      Position := Length(s) + 1;
      repeat
        Dec(Position);
      until (Position <= 0) or (s[Position] = FindChar);
      Result := (Position > 0);
    end;
      

  4.   

    可以用现成函数"搭建"一个:
    uses StrUtils;function PosReverse(const Sub, S: String): Integer;
    begin
      Result := Pos(Sub, AnsiReverseString(S));
      if Result > 0 then Result := Length(S) - Result + 1;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      ShowMessage (IntToStr(PosReverse('/', '/d/ew/h.fff')));
    end;
      

  5.   

    如果Sub要支持多个字符, 则还要修改一下:
    uses StrUtils;function PosReverse(const Sub, S: String): Integer;
    begin
      Result := Pos(AnsiReverseString(Sub), AnsiReverseString(S));
      if Result > 0 then Result := Length(S) - Result - Length(Sub) + 2;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      ShowMessage (IntToStr(PosReverse('/h', '/d/ew/h.fff')));
    end;