如何替换文件中字符串
编号: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$
不管是否替换都写入。
此问题由李海回答。
| |
|
|
| |
|
|