本文整理自网络,侵删。
有一个文本1.txt,里面内容例如下:11223322441155...N个
处理后的想要结果是这样:334455...N个
但是用以下代码处理并不是这样子,它保留了一个重复。 pList := TStringList.Create; pList.sorted := True; pList.Duplicates := dupIgnore; pList.LoadFromFile('1.txt'); pList.SaveToFile('2.txt'); pList.Free;结果为:1122334455...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
相关阅读 >>
Delphi idhttp组件+idhttpserver组件实现文件下载服务
Delphi 如何把一个exe做为res加入到dll中,并在运行时生成exe文件执行
更多相关阅读请进入《Delphi》频道 >>