var slist,dlist:TStringList; i:Integer; begin slist := TStringList.Create; dlist := TStringList.Create; slist.Delimiter := ','; slist.DelimitedText := 'R1,R2,R3,R11,R15,R11,R3'; for i:=0 to slist.Count - 1 do begin if dlist.IndexOf(slist.Strings[i]) = -1 then dlist.Add(slist.Strings[i]) else ShowMessage(slist.Strings[i]+'有重复'); end; end;
给你一个通用的,没有什么特殊函数var s,s1:string; str:Tstrings; i,j:Integer; begin self.ListBox1.Items.Clear; str:=TStringList.Create; str.Clear; s:='R1,R2,R3,R11,R15,R11,R3'; while s<>'' do begin i:=Pos(',',s); if i=0 then begin s1:=s; s:=''; end else begin s1:=Copy(s,1,i-1); s:=Copy(s,i+1,Length(s)-i); end; j:=str.IndexOf(s1); if j>=0 then self.ListBox1.Items.Add(s1) else str.Add(s1); end; end; //Listbox1里就是重复的字符串
我来说第三种 procedure TForm1.Button1Click(Sender: TObject); var s: String; slist,dlist:TStringList; i:Integer; begin s:='R1,R2,R3,R11,R15,R11,R3'; slist := TStringList.Create; dlist := TStringList.Create; ExtractStrings([','],[' '],PCHAR(s),SList);//第一个参数是分隔符; 第二个参数是开头被忽略的字符 for i:=0 to slist.Count - 1 do begin if dlist.IndexOf(slist.Strings[i]) = -1 then dlist.Add(slist.Strings[i]) else ShowMessage(slist.Strings[i]+'有重复'); end; ShowMessage(dList.Text); end;
var
slist,dlist:TStringList;
i:Integer;
begin
slist := TStringList.Create;
dlist := TStringList.Create;
slist.Delimiter := ',';
slist.DelimitedText := 'R1,R2,R3,R11,R15,R11,R3';
for i:=0 to slist.Count - 1 do
begin
if dlist.IndexOf(slist.Strings[i]) = -1 then
dlist.Add(slist.Strings[i])
else
ShowMessage(slist.Strings[i]+'有重复');
end;
end;
1、直接用循环方式分割、判断
2、用Delimiter函数分割,然后判断,就是1楼的方法
3、ExtractStrings函数分割、然后判断
s,s1:string;
str:Tstrings;
i,j:Integer;
begin
self.ListBox1.Items.Clear;
str:=TStringList.Create;
str.Clear;
s:='R1,R2,R3,R11,R15,R11,R3';
while s<>'' do
begin
i:=Pos(',',s);
if i=0 then
begin
s1:=s;
s:='';
end
else
begin
s1:=Copy(s,1,i-1);
s:=Copy(s,i+1,Length(s)-i);
end;
j:=str.IndexOf(s1);
if j>=0 then
self.ListBox1.Items.Add(s1)
else
str.Add(s1);
end;
end;
//Listbox1里就是重复的字符串
procedure TForm1.Button1Click(Sender: TObject);
var
s: String;
slist,dlist:TStringList;
i:Integer;
begin
s:='R1,R2,R3,R11,R15,R11,R3';
slist := TStringList.Create;
dlist := TStringList.Create;
ExtractStrings([','],[' '],PCHAR(s),SList);//第一个参数是分隔符; 第二个参数是开头被忽略的字符
for i:=0 to slist.Count - 1 do
begin
if dlist.IndexOf(slist.Strings[i]) = -1 then
dlist.Add(slist.Strings[i])
else
ShowMessage(slist.Strings[i]+'有重复');
end;
ShowMessage(dList.Text);
end;