delphi TStringList删除重复项  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi TStringList删除重复项


有一个文本1.txt,里面内容例如下:
11
22
33
22
44
11
55
...
N个

处理后的想要结果是这样:
33
44
55
...
N个

但是用以下代码处理并不是这样子,它保留了一个重复。
  pList := TStringList.Create;
  pList.sorted := True;
  pList.Duplicates := dupIgnore;
  pList.LoadFromFile('1.txt');
  pList.SaveToFile('2.txt');
  pList.Free;
结果为:
11
22
33
44
55
...
N个


 procedure RemoveDuplicates(const stringList : TStringList) ;
 var
   buffer: TStringList;
   cnt: Integer;
 begin
   stringList.Sort;
   buffer := TStringList.Create;
   try
     buffer.Sorted := True;
     buffer.Duplicates := dupIgnore;
     buffer.BeginUpdate;
     for cnt := 0 to stringList.Count - 1 do
       buffer.Add(stringList[cnt]) ;
     buffer.EndUpdate;
     stringList.Assign(buffer) ;
   finally
     FreeandNil(buffer) ;
   end;
 end;



var
  sLi: TStringList;
begin
  sLi := TStringList.Create;
  try
    sLi.LoadFromFile('c:\111.txt');
    RemoveDuplicates(sLi);
    sLi.SaveToFile('c:\111.txt');
  finally
    sLi.Free;
  end;
end;

删除重复项,并且不保留代码如下:


procedure GetUniqueStringList;
var
  CurrentString: string;
  LastString: string;
  Count: Integer;
  Index: Integer;
  SourceList: TStringList;
  UniqueList: TStringList;
begin
  Count := 1;
  LastString := '';
  SourceList := TStringList.Create;
  UniqueList :=  TStringList.Create;
  try
    SourceList.LoadFromFile('1.txt');
    SourceList.Sorted := True;
    for Index :=0 to Pred(SourceList.Count) do
    begin
      CurrentString := SourceList[Index];
      if CurrentString = LastString then
        Count := Count + 1
      else
      begin
        if LastString <> '' then
        begin
          if Count = 1 then
            UniqueList.Add(LastString)
          else
            Count := 1;
        end;
      end;
      LastString := CurrentString;
    end;
    if Count = 1 then UniqueList.Add(LastString);
    UniqueList.SaveToFile('2.txt');
  finally
    SourceList.Free;
    UniqueList.Free;
  end;
end;

来源:https://bbs.csdn.net/topics/390463304


推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.11846303939819 seconds