字符串间隔符为","号,字符串字符有可能是一个、两个、三个,如下:
R1,R2,R3,R11,R15,R11,R3  结果就发现R11,R3重复了,返回结果,重复的字符是R11,R3

解决方案 »

  1.   


    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;
      

  2.   

    对了,我的是DELPHI5,没这函数吧
      

  3.   

    可以有三种方式
    1、直接用循环方式分割、判断
    2、用Delimiter函数分割,然后判断,就是1楼的方法
    3、ExtractStrings函数分割、然后判断
      

  4.   

    D5 TStringList下用CommaText即可
      

  5.   

    我是新手,能帮我写个DELPHI5中的能用的全部语句吗
      

  6.   

    给你一个通用的,没有什么特殊函数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里就是重复的字符串
      

  7.   

    我来说第三种
    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;