文摘:
文件中特定字符串的寻找与替换是一种极其常见的操作,在Win95中,可以很容易地使用"写字板"、"Word"等软件的"替换"功能在某个文件中完成寻找替换的工作,而如果要在多个文件中进行寻找替换,则需费一翻精力。针对这一
问题,笔者用Visual Basic 5.0编制了一个小
程序,使用它可以快速地完成在多个文件中查找与替换的任务。
正文:
众所周知,文本文件中特定字符串的寻找与替换是一种极其常见的操作,在Win95中,可以很容易地使用"写字板"、"Word"等软件的"替换"功能在某个文件中完成寻找替换的工作,可是如果想在很多文件中查找某个字符串并进行替换就不是一件轻松的事情了,如果你没有足够的耐心,恐怕是无法完成这个工作的。而在平时的
学习工作中又经常会遇到需要在多个文件中进行寻找替换的情况,特别是从Internet上大量下载网页后,经常要对
下载的页面做一些简单的批量修改,如将太小的字体变大、将刺眼的背景色变成柔和的利于常时间浏览的颜色等。
针对这一问题,笔者用Visual Basic 5.0编制了一个小
程序,使用它可以快速地完成在多个文件中查找与替换的任务。
一、关键技术说明
为完成上述任务,主要有下面两个问题需要解决:
1、如何在一个文件中进行字符串的查找与替换;
解决这个问题的基本思路是将要处理的文件读入内存,对文件进行扫描,找出匹配的字符串,然后进行替换。这一工作我们可以借助于RichTextBox控件来完成。
首先使用RichTextBox控件的LoadFile方法将文件读入文本框,然后用Find方法在 RichTextBox 控件中搜索给定的字符串,在找到匹配的字符串后,可以通过设定SelStart、SelLength属性选中
搜索文本,最后将替换字符串赋值给SelText,这样就完成了一次寻找替换的任务。重复上述过程,即可将文件中所有匹配的字符串替换掉。
2、如何处理多个文件
在
vb中有多种方法可以用来获取文件名列表,如使用FileListBox控件、CommonDialog控件或使用OLE拖动,这里我们采用CommonDialog控件来实现。
在使用CommonDialog控件之前,首先要进行一些设置工作:将Flags属性设定为 cdlOFNAllowMultiselect,即允许选择多个文件;根据具体需要设置Filter属性来决定"打开文件"对话框允许显示的文件类型;给MaxFileSize属性赋予较大的值,以便FileName属性可容纳较多的文件名。设置完成后调用ShowOpen即可显示"打开文件"对话框让用户选择文件,在对话完毕后检查FileName属性以获取选中的文件名。
需要注意的是,CommonDialog控件将用户选中的所有文件名都保存在FileName这个简单字符型属性中,文件名之间用空格分开,因此在进行替换处理之前必须首先用
程序将每个文件名取出。
二、
程序实例
1、窗体布局
新建一个工程,在Form1上放置两个命令按钮cmdChooseFiles、cmdOk,Caption属性分别为"选择文件"和"开始寻找替换";放置两个标签,Caption分别为"搜索字符串"和"替换字符串";放置两个文本框txtSearch和txtReplace;放置一个RichTextBox控件和一个CommonDialog控件,控件名取缺省名即可。窗体布局如下图:
2、
程序代码
为Form1添加如下代码:
Dim FileNames() As String ''文件名列表数组,下标从1开始
Dim FileCount As Long ''文件名列表中的文件名总数
Private Sub cmdChooseFiles_Click()
Dim i As Long,y As Long,Dim z As Long
With CommonDialog1
.Flags = cdlOFNAllowMultiselect ''允许选择多个文件
.Filter = "HTM Files|*.HTM" ''只显示HTM文件,可根据需要改变
.MaxFileSize = 10000 ''FileName属性的最大长度,可根据需要改变
.ShowOpen ''显