有这样一个字符串 ‘aa’ AND  'bbb' AND 'ccc'; 我想删除最后 一个AND和它后面的字符串,怎么实现呢?

解决方案 »

  1.   

    先把这个字符串倒序,然后求最后一次出现的位置,第三步用COPY函数取前面的字符
      

  2.   

    暂时想到的的方法使用字串反转来做。procedure TForm1.Button1Click(Sender: TObject);
    const
      s= '‘aa’ AND ''bbb''BAND ''ccc'';';
    var
      c:string;
      k:Integer;
    begin
      //使用ReverseString需要引用StrUtils单元
      c := ReverseString(s);   //先把S反转一下
       //找到反转后一个AND字符,因为s被反转了
      //所以这里不能搜索AND 要搜索DNA
      k := Pos('DNA',c);
      if k > 0 then
      begin
          //如果找到,删除它及之前的所有字符
          Delete(c,1,k+length('DNA') -1);
          //删除完后再次反转回来。
          c := ReverseString(c);
          ShowMessage(c);
      end;
    end;
      

  3.   

    查找最后一个AND的位置,然后截取字符串!从网上搜吧,一大堆!
      

  4.   

    记得引用这个:StrUtils
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls,StrUtils;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        function ReversePos(SubStr, S: String): Integer;  //求最后一个AND 出现的位置
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      i:Integer;
      str:string;
    begin
      str:= '''aa'' AND ''bbb'' AND ''ccc''';
      i:=ReversePos('AND',str);
      str:=Copy(str,1,i-1);
      ShowMessage(str);
    end;function TForm1.ReversePos(SubStr, S: String): Integer;
    var
      i : Integer;
    begin
      i := Pos(ReverseString(SubStr), ReverseString(S));
      if i > 0 then i := Length(S) - i - Length(SubStr) + 2;
      Result := i;
    end;end.
      

  5.   

    其实不用反转用循环while Pos('AND')>0 每次保存取到的值,直到跳出循环 然后用保存的位置字符串截取即可