如何判断stringlist中是否存在某个记录(在线等待)
如何判断stringlist中是否存在某个记录
比如
var
urllist:Tstrings;
begin
urllist:=tstringlist.create;
urllist.add(''abc'');
urllist.add(''def'');
urllist.add(''ghi'');
....
end;
请问现在又有一个字符串,我如何判断urllist中是否有相应的字符,如果有则不加入,如果没有就add。
在线等待.....
2楼: if urlList.IndexOf(''cdd'')> 0 then
...
else
urlList.Add(''cdd'') 如财务软件有哪些
3楼: 如果只是向列表中添加的话,也可以写成这样:
var
list: TStrings;
anyString: String;
...
list := TStringList.Create;
...
if list.IndexOf( anyString ) = -1 then
begin
list.Add( anyString );
end;
4楼: 同意shine007,用INDEXOF
5楼: procedure TForm1.Button7Click(Sender: TObject);
var
urllist:Tstrings;
i: integer ;
Exists:boolean ;
begin
urllist:=tstringlist.create;
urllist.Assign(ListBox1.Items);
Exists:= false ;
for i:=0 to urllist.Count -1 do
if urllist.Strings[i]= edit1.Text then
begin
showmessage(''已经存在!'') ;
Exists:= true ;
break ;
end ;
if not Exists then
urllist.Add(edit1.Text) ;
ListBox1.items.Assign(urllist);
urllist.Free ;
end;
6楼: 先谢谢各位大虾!再说问题
用了上面的方法好像不行,用自己的方法成功了,还发现了个大秘密!
下面是我的代码,请各位大虾探讨一下
procedure TForm1.Button1Click(Sender: TObject);
var
str,url:string;
startid,endid,id:integer;
urllist:Tstrings;
begin
urllist:=tstringlist.create;
str:=memo1.Text;
str:=stringreplace(str,#13,'''',[rfreplaceall]);//不写个两段没法过滤重复的url,不知道为什么
str:=stringreplace(str,#10,'''',[rfreplaceall]);//不写个两段没法过滤重复的url,不知道为什么
repeat
startid:=pos(''href="'',str);
if startid>0 then
delete(str,1,startid+5);
endid:=pos(''"'',str);
url:=copy(str,0,endid-1);
if pos(''KlammID=196836'',url)>0 then
if Pos(''http://www.losespot.de/''+url,urllist.Text)=0 then //用urllist.IndexOf(''http://www.losepot.de/''+url)=-1没成功
urllist.Add(''http://www.losespot.de/''+url);
until
startid=0;
memo1.Text:=urllist.Text;
listbox1.Items.AddStrings(urllist);
end;
下面是测试字符串,添加到memo1.lines里面
|
仓库管理软件版7楼: 有发现了个问题,如果str是用idhttp直接获得的就不用加str:=stringreplace(str,#13,'''',[rfreplaceall]);
str:=stringreplace(str,#10,'''',[rfreplaceall]);
真是好玩!