const sString = 'str1|2|str2|33|str3|444|';implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject); var ts:TStringList; i:Integer; begin ts:=TStringList.Create; ts.Delimiter:='|'; ts.DelimitedText:=sString; ShowMessage(ts.Text); for i:=0 to ts.Count-1 do begin if ts[i]=Edit1.Text then Edit2.Text:=ts[i+1]; end; end;
procedure TForm1.Button1Click(Sender: TObject); var s:string; list:TStringList; function FindStr(str:string):string; var i:Integer; begin i := list.IndexOf(str); Result := list.Strings[i+1]; end; begin list := TStringList.Create; s := 'str1|2|str2|33|str3|444|'; list.Delimiter := '|'; list.DelimitedText := s; ShowMessage(FindStr('str2')); end;
procedure TForm1.Button1Click(Sender: TObject); var s,strtemp:string; sl:Tstringlist; begin s:='str1|2|str2|33|str3|444|'; SL:=TStringList.Create; ExtractStrings(['|'],['|'],PChar(s),SL); strtemp:=trim(edit1.text); if (sl.indexof(strtemp)<>-1) and ((sl.indexof(strtemp) mod 2)=0 )then begin edit2.text:=sl.strings[sl.IndexOf(strtemp)+1] end; SL:=TStringList.free; end;
当然应该完善一下,还可以反查,就是输入2得到str1,输入3得到str2
procedure TForm1.Button1Click(Sender: TObject); var s,strtemp:string; sl:Tstringlist; begin s:='str1|2|str2|33|str3|444|'; SL:=TStringList.Create; ExtractStrings(['|'],['|'],PChar(s),SL); strtemp:=trim(edit1.text); if (sl.indexof(strtemp)<>-1) and ((sl.indexof(strtemp) mod 2)=0 )then begin edit2.text:=sl.strings[sl.IndexOf(strtemp)+1]; end else if (sl.indexof(strtemp)<>-1) and ((sl.indexof(strtemp) mod 2)=1 ) then begin edit2.text:=sl.strings[sl.IndexOf(strtemp)-1]; end; SL:=TStringList.free; end;
const
sString = 'str1|2|str2|33|str3|444|';implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
ts:TStringList;
i:Integer;
begin
ts:=TStringList.Create;
ts.Delimiter:='|';
ts.DelimitedText:=sString;
ShowMessage(ts.Text);
for i:=0 to ts.Count-1 do
begin
if ts[i]=Edit1.Text then Edit2.Text:=ts[i+1];
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
list:TStringList;
function FindStr(str:string):string;
var
i:Integer;
begin
i := list.IndexOf(str);
Result := list.Strings[i+1];
end;
begin
list := TStringList.Create;
s := 'str1|2|str2|33|str3|444|';
list.Delimiter := '|';
list.DelimitedText := s;
ShowMessage(FindStr('str2'));
end;
edit1用来输入,edit2用来显示结果。
button的Click事件中写以下代码
procedure TForm1.Button1Click(Sender: TObject);
var
s,strtemp:string;
sl:Tstringlist;
begin
s:='str1|2|str2|33|str3|444|';
SL:=TStringList.Create;
ExtractStrings(['|'],['|'],PChar(s),SL);
strtemp:=trim(edit1.text);
if (sl.indexof(strtemp)<>-1) and ((sl.indexof(strtemp) mod 2)=0 )then
begin
edit2.text:=sl.strings[sl.IndexOf(strtemp)+1]
end;
SL:=TStringList.free;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s,strtemp:string;
sl:Tstringlist;
begin
s:='str1|2|str2|33|str3|444|';
SL:=TStringList.Create;
ExtractStrings(['|'],['|'],PChar(s),SL);
strtemp:=trim(edit1.text);
if (sl.indexof(strtemp)<>-1) and ((sl.indexof(strtemp) mod 2)=0 )then
begin
edit2.text:=sl.strings[sl.IndexOf(strtemp)+1];
end
else if (sl.indexof(strtemp)<>-1) and ((sl.indexof(strtemp) mod 2)=1 ) then
begin
edit2.text:=sl.strings[sl.IndexOf(strtemp)-1];
end;
SL:=TStringList.free;
end;