一个字符串为 ‘;aaa;bb;ee;aa;ee;bb;bb;dddd’ 怎么把里面用;分割的重复的去掉?
最后形成‘aaa;bb;ee;aa;dddd’ 多谢各位了。

解决方案 »

  1.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
    s:string;
    begin
    s:=';aaa;bb;ee;aa;ee;bb;bb;dddd';
    delete(s,1,1);
    delete(s,14,9);
    showmessage(s);
    end;按一楼的要求写的
      

  2.   

    (1)用循环比较并截取重复的。
    取得首个分隔的字符串与余下的进行比较(2)将内容写入一个TstringList,再对stringList进行操作,最后再组合stringList中的内容成字符串
      

  3.   


    var
      StrLst: TStringList;
      S: string;
    begin
      S := ';aaa;bb;ee;aa;ee;bb;bb;dddd';
      WriteLn(S);
      StrLst := TStringList.Create;
      try
        StrLst.Duplicates := dupIgnore;
        StrLst.Sorted := True;
        StrLst.Delimiter := ';';
        StrLst.DelimitedText := S;
        S := StrLst.DelimitedText;
        WriteLn(S);
      finally
        FreeAndNil(StrLst);
      end;
    end;
      

  4.   


    procedure TForm1.Button4Click(Sender: TObject);
    var a,b:Integer;sl:TStringList;
    begin
      sl:=TStringList.Create;
      sl.Delimiter:=';';
      sl.DelimitedText:=';aaa;bb;ee;aa;ee;bb;bb;dddd';
      for a:=sl.Count-1 downto 0+1 do
      begin
        for b:=a-1 downto 0 do
        begin
          if sl[a]=sl[b] then
          begin
            sl.Delete(a);
            Break;
          end;
       end;
      end;
      for a:=sl.Count-1 downto 0 do
        if sl[0]='' then sl.Delete(0);
      ShowMessage(sl.DelimitedText);
      sl.Free;
    end; 本来想给你写一个,无奈水平有限啊
    最后请教了网友,才有上面的代码,完全满足你的要求,顺序不变
      

  5.   


    function DeleteDuplicate(S: String): String;
    var
      A: TStringList;
      i: Integer;
    begin
      Result := '';
      A := TStringList.Create;
      try
        A.Delimiter := ';';
        A.DelimitedText := S;
        i := 0;
        while i < A.Count do
        begin
          if (A.Strings[i] = '') or (A.IndexOf(A.Strings[i]) <> i) then
            A.Delete(i)
          else
            inc (i);
        end;
        Result := A.DelimitedText;
      finally
        A.Free;
      end;
    end;//调用的例子:
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      ShowMessage (DeleteDuplicate(';aaa;bb;ee;aa;ee;bb;bb;dddd'));
    end;
      

  6.   

    用tstringlist的Duplicates属性就可以了
    赋值为:dupIgnore
    过滤重复项,在保存