怎样在VB中设计程序实现txt文件中的查找与替换功能,怎样编写代码,求救高手,希望有注解,Thanks~

怎样在VB中设计程序实现txt文件中的查找与替换功能,怎样编写代码,求救高手,希望有注解,Thanks~,第1张

1、窗体布局
新建一个工程,在Form1上放置两个命令按钮cmdChooseFiles、cmdOk,Caption属性分别为"选择文件"和"开始寻找替换";放置两个标签,Caption分别为"搜索字符串"和"替换字符串";放置两个文本框txtSearch和txtReplace;放置一个RichTextBox控件和一个CommonDialog控件,控件名取缺省名即可。
2、程序代码
为Form1添加如下代码:
DimFileNamesAsString‘文件名列表数组,下标从1开始
DimFileCountAsLong‘文件名列表中的文件名总数
PrivateSubcmdChooseFiles_Click
DimiAsLong,yAsLong,DimzAsLong
WithCommonDialog1
Flags=cdlOFNAllowMultiselect‘允许选择多个文件
Filter="HTMFilesHTM"‘只显示HTM文件,可根据需要改变
MaxFileSize=10000‘FileName属性的最大长度,可根据需要改变
ShowOpen‘显示"打开文件"对话框
Iffilename=""Then
‘如选择了"取消"按钮,则将FileCount置为0并返回
FileCount=0
ExitSub
EndIf
filename=filename&""‘在FileName最后添加一个空格,以便处理
‘以下从FileName属性中逐个读取文件名,并放入FileNames数组中
z=1
y=0
Fori=1ToLen
i=InStr
Ifi=0Then
ExitFor
EndIf
ReDimPreserveFileNames
FileNames=Mid
Ify>0Then‘如有多个文件,则在每个文件名前加上完整的路径
FileNames=FileNames&"“"&FileNames
EndIf
z=i+1
y=y+1
Nexti
Ify=1Then‘如FileName只包含一个文件名,则将其赋给FileName
‘并将FileCount置为1
ReDimPreserveFileNames
FileNames=FileNames
FileCount=1
Else‘否则根据文件数确定FileCount的值
FileCount=y-1
EndIf
EndWith
EndSub
PrivateSubcmdOk_Click
DimiAsLong
DimSearchStringAsString‘搜索字符串
DimReplaceStringAsString‘替换字符串
DimStartPositionAsLong‘搜索字符串在文件中出现的位置
DimSearchLengthAsLong‘搜索字符串长度
SearchString=Trim
ReplaceString=Trim
SearchLength=Len
WithRichTextBox1
Fori=1ToFileCount‘以下依次处理FileNames数组中的文件
RichTextBox1LoadFileFileNames,rtfText‘读入文件
StartPosition=Find‘寻找搜索字符串
IfStartPosition<>-1Then‘如果找到,则执行替换 *** 作
SelStart=StartPosition
SelLength=SearchLength
SelText=ReplaceString
SaveFileFileNames,rtfText‘写入文件
EndIf
Nexti
EndWith
MsgBox"转换结束!",vbExclamation
EndSub
3、程序说明
(1)运行程序后,单击"选择文件"按钮选择文件,并分别输入搜索和替换字符串,然后单击"开始寻找替换"按钮,即可自动进行工作。
(2)由于篇幅有限,程序没有进行任何错误处理,实际使用前,应加入必要的错误处理代码,如:在未选中文件前、未输入搜索和替换字符串前使"开始寻找替换"按钮失效;在某个文件中没有找到搜索字符串时给予提示并跳过该文件等。
(3)可在程序中加入进度指示条(可使用ProgressBar控件),使界面更加友好。
(4)程序对每个文件仅替换第一个匹配的字符串,如需要替换所有匹配的字符串,只需加入简单几句代码即可实现。
(5)本程序用VisualBasic50编写,在Pwin95、Pwin97环境下运行正常。

VB使用Replace在字符串中查找指定字符串并替换为另一字符串的功能。

Replace函数

描述

返回一个字符串,该字符串中指定的子字符串已被替换成另一子字符串,并且替换发生的次数也是指定的。

说明

Replace函数的返回值是一个字符串,但是,其中从start所指定的位置开始,到expression字符串的结尾处的一段子字符串已经发生过替换动作。并不是原字符串从头到尾的一个复制。

实例代码:将'vb 的查找并替换功能'中'并'替换为'和':

Private Sub Command1_Click()
    Dim s As String
    Dim s1 As String
    s = "vb 的查找并替换功能"
    s1 = "并"
    s = Replace$(s, s1, "和")
    DebugPrint s
End Sub

要修改的文件D:\123txt,修改后的文件保存为D:\abctxt
Private Sub Command1_Click()
Dim FileNumber1, FileNumber2, Str As String
FileNumber1 = FreeFile '得到一个未使用的文件号。
Open "D:\123txt" For Input As #FileNumber1 '打开要读取的文件
FileNumber2 = FreeFile
Open "D:\abctxt" For Output As #FileNumber2 '打开要写入的文件
While Not EOF(1) ‘直到最后一行
Line Input #FileNumber1, Str ’按行读取文件
Str = Replace(Str, "@02", "大") ‘替换第一个字符
Str = Replace(Str, "@03", "100") '替换第二个字符
Str = Replace(Str, "@04", "567")'替换第三个字符
Print #FileNumber2, Str '写入替换后的内容
Wend
Close #FileNumber1 '关闭文件
Close #FileNumber2 '关闭文件
End Sub

Dim tmpStr As String, resStr As String, a As String
'读取txt
Open "d:\vbtxt" For Input As #1
Do While Not (EOF(1))
Input #1, a
tmpStr = tmpStr & a
Loop
Close #1
'开始处理字符串
resStr = Replace(tmpStr, "abc", "xyz")
'保存
Open "d:\vb_replacetxt" For Output As #1
Print #1, resStr
Close #1

现将读取文本,然后创建一个动态数组,将文本按每一行存入数组,然后循环找寻数据
查找可以使用replac
也可以使用,InStr
全文查找基本就是循环找寻,使用数组的话比较方便,而且适合做批量处理
若有疑问可以咨询 Q 380089066 禁与千寻

Private Sub Command2_Click()
Dim a$, b$
Open "D:\vbtxt" For Input As #1 ' 打开文件。
Do While Not EOF(1) ' 循环至文件尾。
Line Input #1, a ' 读入一行数据并将其赋予某变量。
b = b & Replace(a, "rightSpace", "rightSpace=-242") & vbCrLf ' 替换并放入变量
Loop
Close #1 ' 关闭文件。
Open "D:\vbtxt" For Output As #1 ' 打开文件。
Print #1, b '写入文件
Close #1 ' 关闭文件。
End Sub
补充:不会错的注意文件名别错了就行
再补充: sorry, 打错了呵呵,才看到
Open "D:\vbtxt" For output As #1 ' 打开文件。

Private Sub Form_Load()
Dim Ar, I As Long, S As String
Open "d:\123txt" For Binary As #1
S = StrConv(InputB(LOF(1), 1), vbUnicode)
Close #1
Ar = Split(S, vbCrLf)
For I = 0 To UBound(Ar)
Ar(I) = Replace(Ar(I), ",", ",1,", , 1)
Next
Open "D:\123TXT" For Output As #1
Print #1, Join(Ar, vbCrLf)
Close #1
End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13076739.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-30
下一篇 2023-05-30

发表评论

登录后才能评论

评论列表(0条)

保存