有一个文本文件dhhm.txt,其内容为
02788166290         00 00 01 00 002200002281 20051125154208
02788166290         00 00 01 00 002200001604 20051125154033
02787464420         00 00 01 00 002300001587 20051125153933
02788166290         00 00 01 00 002200002280 20051125153902
02783659798         00 02 01 00 001100001696 20051125153850
02788166290         00 00 01 00 001100001395 20051125153821
02722961699         00 02 01 00 002020002184 20051125153647
02786688775         00 02 01 00 002020002184 20051125153634
现在需要第一列和第六列,并且生成新的文本文件dhhm1.txt,格式如下:
02788166290     002200002281
02788166290     002200001604
02787464420     002300001587
02788166290     002200002280
02783659798     001100001696
02788166290     001100001395
02722961699     002020002184
02786688775     002020002184
如何实现,在线等各位,谢谢了!!!!

解决方案 »

  1.   

    //需要用到规则表达式,RegExpr.pasprocedure TForm2.btnTestClick(Sender: TObject);
    var
      F: TextFile;
      S: string;
      RegExpr: TRegExpr;
      StrList: TStringList;
      I: Integer;
    begin
      if dlgOpen.Execute then
      begin
        RegExpr := TRegExpr.Create;
        RegExpr.Expression := '(?i)[ ]+';
        RegExpr.Compile;    StrList := TStringList.Create;
        
        AssignFile(F, dlgOpen.FileName);
        Reset(F);    while not Eof(F) do
        begin
          Readln(F, S);      RegExpr.Split(S, StrList);
          memDest.Lines.Add(StrList[0] + #9 + StrList[5]);
          StrList.Clear;
        end;
        
        CloseFile(F);
      end;
    end;
      

  2.   

    规则表达式库下载:http://RegExpStudio.com
      

  3.   

    liangqingzhi(老之) 给你的程序可以实现啊
    procedure TForm1.Button1Click(Sender: TObject);
    var i,j:integer;
        c1,c6:string;
        s:TStringList;
    begin
      s:=TStringList.Create;
      s.LoadFromFile('dhhm.txt');
      for i:=0 to s.Count-1 do
        begin
          c1:=copy(s[i],1,pos(' ',s[i]));
          for j:=1 to 5 do
          s[i]:=trim(copy(s[i],pos(' ',s[i]),Length(s[i])));
          c6:=copy(s[i],1,pos(' ',s[i]));
          s[i]:=c1+'   '+c6;
        end;
      s.SaveToFile('dhhm1.txt');
      s.Free;
    end;
      

  4.   

    其实用规则表达式能解决很多类似的棘手问题,而且解决办法比较通用。cuteant的办法比较精练,采用一层层剥皮的方法,也可以。
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      ASource, ALien: TStringList;
      i: Integer;
    begin
      ASource := TStringList.Create;
      ALien := TStringList.Create;
      Memo1.Lines.Clear;
      ASource.LoadFromFile('C:\22.txt');
      for i := 0 to ASource.Count - 1 do
      begin
        ALien.Clear;
        ExtractStrings([' '], [],pchar(ASource.Strings[i]) , ALien);
        Memo1.Lines.Add(ALien.Strings[0] + '  ' +  ALien.Strings[5]);
      end;
    end;
      

  6.   

    ASource.Free;
      ALien.Free;
      

  7.   

    将这句修改一下 memDest.Lines.Add(StrList[0] + #9 + StrList[5]);改为 memDest.Lines.Add(StrList[0]+#9+StrList[2]+#9+StrList[3]+#9+StrList[6]);