把一个.txt文件里的字符串替换成另一个字符串,效率最好高一点。急!!!分不够可以加...在线等待!

解决方案 »

  1.   

    memo1.Lines.LoadFromFile('c:\c.txt') ;
    memo1.Text := StringReplace(memo1.Text ,  'a','A',[rfReplaceAll]);
    memo1.Lines.SaveToFile('c:\c.txt');测试通过
    自己改改
      

  2.   

    var
      lst: TStrings;
      lsFile: String;
    begin
      lst := TStringList.Create;
      lst.LoadFromFile(lsFile);
      lst.Text := StringReplace(lst.Text,'oldStr','newStr',[rtReplaceAll]);
      lst.Free;
    end;稍加改造!
      

  3.   

    http://www.delphijs.net/Article_Show.asp?ArticleID=1212
      

  4.   

    var
      lst: TStringlist;
      lsFile: String;
    begin  lst := TStringList.Create;
    try
      lst.LoadFromFile(lsFile);
      lst.Text := StringReplace(lst.Text,'oldStr','newStr',[rtReplaceAll]);
    finally
      lst.Free;
    end;end;
      

  5.   

    用FileStream来读取大文件,
    通过对比字节来作
      

  6.   

    总之一个StringReplace(lst.Text,'oldStr','newStr',[rtReplaceAll]);
    就行了,
    如果这也不会用的话,
    我想不好意思了
      

  7.   

    memo1.Lines.LoadFromFile('c:\aa.txt') ;
    memo1.Text := StringReplace(memo1.Text ,  'b,'B',[rfReplaceAll]);
    memo1.Lines.SaveToFile('c:\aa1.txt');
      

  8.   

    //将A改为B
    var F:TFileStream; C:Char; i:integer;
    begin
      F:=TFileStream.create('C:\123.txt',fmOpenReadWrite);
      while(F.position<F.size) do
      begin
        F.read(C,1);
        if C='A' then 
        begin
          C:='B';
          F.position:=F.position-1;
          F.write(C,1);
        end;
      end;
      F.free;
    end;就算你的文件有100M这个方法都行,不过它部支持中文,要改中文要复杂很多。
      

  9.   

    Delphi自带的StringReplace效率低,下面我给你两个函数,是世界级程序高手用汇编
    语言写的,速度绝对快,你可以和StringReplace比一下,
    function Q_ReplaceStr (const SourceString, FindString, ReplaceString: string): string;
             替换所有符合要求的字符串,区分大小写。
    function Q_ReplaceText (const SourceString, FindString, ReplaceString: string): string;
             功能同上。不区分大小写
    下面是程序例子,你直接将两段//+-+-+-+-+-+-+-+-中间的代码拷贝到你的程序中,再直接
    调用这两个函数就可以了。unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-const
      ToUpperChars: array[0..255] of Char =
        (#$00,#$01,#$02,#$03,#$04,#$05,#$06,#$07,#$08,#$09,#$0A,#$0B,#$0C,#$0D,#$0E,#$0F,
         #$10,#$11,#$12,#$13,#$14,#$15,#$16,#$17,#$18,#$19,#$1A,#$1B,#$1C,#$1D,#$1E,#$1F,
         #$20,#$21,#$22,#$23,#$24,#$25,#$26,#$27,#$28,#$29,#$2A,#$2B,#$2C,#$2D,#$2E,#$2F,
         #$30,#$31,#$32,#$33,#$34,#$35,#$36,#$37,#$38,#$39,#$3A,#$3B,#$3C,#$3D,#$3E,#$3F,
         #$40,#$41,#$42,#$43,#$44,#$45,#$46,#$47,#$48,#$49,#$4A,#$4B,#$4C,#$4D,#$4E,#$4F,
         #$50,#$51,#$52,#$53,#$54,#$55,#$56,#$57,#$58,#$59,#$5A,#$5B,#$5C,#$5D,#$5E,#$5F,
         #$60,#$41,#$42,#$43,#$44,#$45,#$46,#$47,#$48,#$49,#$4A,#$4B,#$4C,#$4D,#$4E,#$4F,
         #$50,#$51,#$52,#$53,#$54,#$55,#$56,#$57,#$58,#$59,#$5A,#$7B,#$7C,#$7D,#$7E,#$7F,
         #$80,#$81,#$82,#$81,#$84,#$85,#$86,#$87,#$88,#$89,#$8A,#$8B,#$8C,#$8D,#$8E,#$8F,
         #$80,#$91,#$92,#$93,#$94,#$95,#$96,#$97,#$98,#$99,#$8A,#$9B,#$8C,#$8D,#$8E,#$8F,
         #$A0,#$A1,#$A1,#$A3,#$A4,#$A5,#$A6,#$A7,#$A8,#$A9,#$AA,#$AB,#$AC,#$AD,#$AE,#$AF,
         #$B0,#$B1,#$B2,#$B2,#$A5,#$B5,#$B6,#$B7,#$A8,#$B9,#$AA,#$BB,#$A3,#$BD,#$BD,#$AF,
         #$C0,#$C1,#$C2,#$C3,#$C4,#$C5,#$C6,#$C7,#$C8,#$C9,#$CA,#$CB,#$CC,#$CD,#$CE,#$CF,
         #$D0,#$D1,#$D2,#$D3,#$D4,#$D5,#$D6,#$D7,#$D8,#$D9,#$DA,#$DB,#$DC,#$DD,#$DE,#$DF,
         #$C0,#$C1,#$C2,#$C3,#$C4,#$C5,#$C6,#$C7,#$C8,#$C9,#$CA,#$CB,#$CC,#$CD,#$CE,#$CF,
         #$D0,#$D1,#$D2,#$D3,#$D4,#$D5,#$D6,#$D7,#$D8,#$D9,#$DA,#$DB,#$DC,#$DD,#$DE,#$DF);procedure Q_TinyCopy(Source, Dest: Pointer; L: Cardinal);
    asm
            JMP     DWORD PTR @@tV[ECX*4]
    @@tV:   DD      @@tu00, @@tu01, @@tu02, @@tu03
            DD      @@tu04, @@tu05, @@tu06, @@tu07
            DD      @@tu08, @@tu09, @@tu10, @@tu11
            DD      @@tu12, @@tu13, @@tu14, @@tu15
            DD      @@tu16, @@tu17, @@tu18, @@tu19
            DD      @@tu20, @@tu21, @@tu22, @@tu23
            DD      @@tu24, @@tu25, @@tu26, @@tu27
            DD      @@tu28, @@tu29, @@tu30, @@tu31
            DD      @@tu32
    @@tu00: RET
    @@tu01: MOV     CL,BYTE PTR [EAX]
            MOV     BYTE PTR [EDX],CL
            RET
    @@tu02: MOV     CX,WORD PTR [EAX]
            MOV     WORD PTR [EDX],CX
            RET
    @@tu03: MOV     CX,WORD PTR [EAX]
            MOV     WORD PTR [EDX],CX
            MOV     CL,BYTE PTR [EAX+2]
            MOV     BYTE PTR [EDX+2],CL
            RET
    @@tu04: MOV     ECX,DWORD PTR [EAX]
            MOV     DWORD PTR [EDX],ECX
            RET
    @@tu05: MOV     ECX,DWORD PTR [EAX]
            MOV     DWORD PTR [EDX],ECX
            MOV     CL,BYTE PTR [EAX+4]
            MOV     BYTE PTR [EDX+4],CL
            RET
    @@tu06: MOV     ECX,DWORD PTR [EAX]
            MOV     DWORD PTR [EDX],ECX
            MOV     CX,WORD PTR [EAX+4]
            MOV     WORD PTR [EDX+4],CX
            RET
    @@tu07: MOV     ECX,DWORD PTR [EAX]
            MOV     DWORD PTR [EDX],ECX
            MOV     CX,WORD PTR [EAX+4]
            MOV     WORD PTR [EDX+4],CX
            MOV     CL,BYTE PTR [EAX+6]
            MOV     BYTE PTR [EDX+6],CL
            RET
    @@tu08: MOV     ECX,DWORD PTR [EAX]
            MOV     DWORD PTR [EDX],ECX
            MOV     ECX,DWORD PTR [EAX+4]
            MOV     DWORD PTR [EDX+4],ECX
            RET
    @@tu09: MOV     ECX,DWORD PTR [EAX]
            M
      

  10.   

    我只知道StringReplace。需要引用SysUtils单元。
    但学习function Q_ReplaceStr (const SourceString, FindString, ReplaceString: string): string;替换所有符合要求的字符串,区分大小写。
    function Q_ReplaceText (const SourceString, FindString, ReplaceString: string): string;
      

  11.   

    替换的字符串长度是否和原来一样,是16进制还是Ascii替换,你都没有说清楚