(FileName Like 666) AND (Company = AAA) AND (FileName Like 555) AND (LastWriteTime Like 2010) AND (FileName Like 999)字符串是类似这样的语句! 符合删除 含有 FileName 的字符串使语句最后成为  (Company   =   AAA)  AND  (LastWriteTime  like  2010) 语句中有空字符! 请给个思路! 这个组织SQL语句的字符串怎么实现呢?

解决方案 »

  1.   

    如果含FileName 的都被括号扣起来,那就Pos  FileName 的位置,然后向前找到左括号,然后再找右括号,之后删除delete当然也可以使用正则
      

  2.   


    procedure TForm1.Button2Click(Sender: TObject);
    var
            mstr: string;
            ss: TStringList;
            i: integer;
    begin
            mstr := '(FileName Like 666) AND (Company = AAA) AND (FileName Like 555) AND (LastWriteTime Like 2010) AND (FileName Like 999)';
            mstr := StringReplace(mstr,'AND',#13,[rfReplaceAll]);
            ss := TStringList.Create;
            ss.Text := mstr;
            i:=0;
            while i<ss.Count do
            begin
                    if Pos('FileName',ss.Strings[i])>0 then
                    begin
                            ss.Delete(i);
                            continue;
                    end;
                    Inc(i);
            end;        mstr := '';
            for i:=0 to ss.Count -1 do
                    mstr := mstr + Trim(ss.Strings[i]) + ' AND ';
            if mstr<>'' then
                    Delete(mstr,Length(mstr)-4,4);
            ss.Destroy;
            showmessage(mstr);
    end;
      

  3.   

    function TForm1.StrDelete(s,D:string):string;
    var  I:Integer;
      Temp,STemp,FTemp:string;begin  Temp := s+'AND';
      while 1=1 do
      begin
         I := pos('AND',Temp);
         if  I  =  0  then
         begin
              Break;
         end;     FTemp :=  Trim(copy(Temp,1,i-1));
         if  pos(D,Ftemp) > 0 then     //
         begin
         end else
         begin
               if  Stemp = '' then
               begin
                   Stemp := Trim(copy(Temp,1,i-1));
               end else
               begin
                   Stemp := Stemp +' AND '+Trim(copy(Temp,1,i-1));
               end;     end;
         Delete(Temp,1,i+3);
      end;
      Result := STemp;end;自己搞定了!结贴