暂时想到的的方法使用字串反转来做。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;
查找最后一个AND的位置,然后截取字符串!从网上搜吧,一大堆!
记得引用这个: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.
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;
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.