热情软件屋

 

如何替换文件中字符串


编号:QA004581
建立日期: 2002年3月17日 最后修改日期:2002年3月17日
所属类别:

张恒华:
    我有一下载程序,因急用,但本程序尚有错误:
     1.待替换字符串 B 少于原字符串 A 时 = B 加 空格
     2.待替换字符串 B 多于原字符串 A 时 = B (字节多少决定 A )
     3.每次替换时总在文件尾部加很多空格!
    现在,我想只将原字符串 A 完全替换成待替换字符串 B 。即不加也不减并去掉尾部空格怎么办?请老师百忙之中给以解答,最好能给一些解释。

回答:

    修改后的程序为modifyfile.zip,其中ReadFile2.bas为原来的版本,你可以比较一下两个版本的区别。它这个程序由于是读出来就进行替换,然后写回原来的位置,所以要求查找字符串和替换的字符串等长,这比较适合二进制文件的替换。你的要求比较适合文本文件的替换。对于你的要求,需要打开一个文件读,另一个文件写,替换后的字符串不是写回原来的文件,而是写入新文件。当替换完成后,删除原来的文件,再将新文件改名为原来的文件。基本思路就是这样的。
    具体的修改主要有3处:
    1、去掉原来程序中进行A、B长度比较的部分:
    ' If Len(IDString$) > Len(NString$) Then
    ' NewString$ = NString$ + Space$(Len(IDString$) - Len(NString$))
    ' Else
    ' NewString$ = Left$(NString$, Len(IDString$))
    ' End If
    改为:
     NewString$ = NString$
    2、将
     tempstring = Left$(A$, WhereString - 1) & NewString$ & Mid$(A$, WhereString + Len(NewString$))
    改为
     tempstring = Left$(A$, WhereString - 1) & NewString$ & Mid$(A$, WhereString + Len(IDString$))
    这部分是替换的核心。
    3、原来的程序只有在进行替换时才写文件:
     If BlockIsChanged Then
     Put #FileNumber, PosString, A$
     BlockIsChanged = False
     End If
    现在改为:
     Put #FileNumber2, PosString, A$
    不管是否替换都写入。

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio