📄 211.htm
字号:
<p>用VB将Html转换为文本文件</p>
<p></p>
<p>p align="center"> 如何将一个超文本文件Html文件格式转换为Txt文本文件呢?这就是本文所要讨论的内容了。我们都知道,超文本文件有很多的标记,如$#@60;Html$#@62;、$#@60;Head$#@62;、$#@60;Body$#@62;等等,在文本文件中,这些都是没用的,我们要把它们都删去,而且超文本文件还有很多不可见的内容,如用“$#@60;!--”、“--$#@62;”括起来的内容、Java脚本程序,这些在文本文件中也是不可用的,我们也要把它们都删去。因此,我们可以得出这么一个结论:</p>
<p> 一个简单的Html转换Txt程序的基本原理就是--将超文本文件不可视部分去掉,将超文本文件可视部分的内容写到文本文件中去。</p>
<p>好了,有了理论就应该有些实际的东西了。转换的步骤可以简单地归纳为:</p>
<p></p>
<p></p>
<p>1、 去掉$#@60;head$#@62;部分的内容</p>
<p>2、 去掉$#@60;script$#@62;部分的Java脚本程序 </p>
<p>3、 转换$#@60;br为换行符 </p>
<p>4、 转换$#@60;/p$#@62;为换行符 </p>
<p>5、 转换和去掉其它所有的超文本标记 </p>
<p>6、 转换“$#@60;”为“<”符号 </p>
<p>7、 转换“$#@62;”为“>”符号</p>
<p>8、 转换“&”为“&”符号 </p>
<p>9、 转换“ ”为空格符号</p>
<p>10、转换“"”为引号 </p>
<p>11、去掉转换后开头和结尾出现的所有空格符号</p>
<p>12、转换完成 </p>
<p></p>
<p></p>
<p>转换的步骤可用VB的函数IsStr来实现,如下面的代码可以去掉文本框Text3中超文本文件开头到$#@60;/Head$#@62;标记部分的内容:</p>
<p></p>
<p></p>
<p>Do While InStr(1, LCase(Text3.Text), "$#@60;/head$#@62;") <> 0</p>
<p></p>
<p></p>
<p>Text3.SelStart = 0</p>
<p>Text3.SelLength = InStr(1, LCase(Text3.Text), "$#@60;/head$#@62;") + 6</p>
<p>Text3.SelText = ""</p>
<p></p>
<p></p>
<p>Loop</p>
<p></p>
<p></p>
<p> 详细的程序代码请参看程序清单或源程序。这个转换程序设计时考虑的是转换规范的超文本文件,当要转换的文件不够标准(如:有$#@60;/head$#@62;而没有$#@60;head$#@62;与之配对)的时候,转换就不能完成。而且,这个例子只转换了部分的超文本标记,还有许多的标记,如表单标记“FORM”并没有被转换,更多、更详尽的功能就有待你完成了。</p>
<p></p>
<p>附程序清单:</p>
<p>Option Explicit</p>
<p>Private Sub Form_Load()</p>
<p></p>
<p>CommonDialog1.CancelError = True</p>
<p>Text3.Visible = False</p>
<p>Command1.Capti = "打开"</p>
<p>Command2.Caption = "转换==$#@62;"</p>
<p>Command3.Caption = "保存"</p>
<p></p>
<p>End Sub</p>
<p>Private Sub Command1_Click() </p>
<p>On Error Resume Next</p>
<p>Dim TextLine As String</p>
<p>CommonDialog1.Filter = "网页|*.htm;*.html"</p>
<p>CommonDialog1.ShowOpen</p>
<p>If err $#@60;$#@62; 32755 Then</p>
<p></p>
<p>Text1 = ""</p>
<p>"打开文件</p>
<p>Open CommonDialog1.FileName For Input As #1</p>
<p>Do While Not EOF(1)</p>
<p></p>
<p>Line Input #1, TextLine</p>
<p>Text1 = Text1 & Trim(TextLine)</p>
<p></p>
<p>Loop</p>
<p>Close #1</p>
<p></p>
<p>Else</p>
<p></p>
<p>MsgBox "不能打开文件"</p>
<p></p>
<p>End If</p>
<p></p>
<p>End Sub</p>
<p>Private Sub Command3_Click()</p>
<p></p>
<p>On Error Resume Next</p>
<p>CommonDialog1.Filter = "文本文件|*.txt"</p>
<p>CommonDialog1.ShowSave</p>
<p>If err $#@60;$#@62; 32755 Then</p>
<p></p>
<p>Open CommonDialog1.FileName For Output As #1</p>
<p>Print #1, Text3</p>
<p>Close #1</p>
<p></p>
<p>Else</p>
<p></p>
<p>MsgBox "不能保存文件"</p>
<p></p>
<p>End If</p>
<p></p>
<p>End Sub</p>
<p>Private Sub Command2_Click()</p>
<p></p>
<p>Dim txtStr As String</p>
<p>On Error GoTo err</p>
<p>Form1.MousePointer = 11</p>
<p>Text3.Text = Text1.Text</p>
<p>DoEvents</p>
<p>Form1.Caption = "正在去掉$#@60;head$#@62;部分..."</p>
<p>"去掉$#@60;head$#@62;部分</p>
<p>Do While InStr(1, LCase(Text3.Text), "$#@60;/head$#@62;") $#@60;$#@62; 0</p>
<p></p>
<p>Text3.SelStart = 0</p>
<p>Text3.SelLength = InStr(1, LCase(Text3.Text), "$#@60;/head$#@62;") + 6</p>
<p>Text3.SelText = ""</p>
<p></p>
<p>Loop</p>
<p>Form1.Caption = "正在去掉$#@60;script$#@62;部分..."</p>
<p>"去掉$#@60;script$#@62;部分</p>
<p>Do While InStr(1, LCase(Text3.Text), "$#@60;/script$#@62;") $#@60;$#@62; 0</p>
<p></p>
<p>Text3.SelStart = InStr(1, LCase(Text3.Text), "$#@60;script") - 1</p>
<p>Text3.SelLength = InStr(1, LCase(Text3.Text), "$#@60;/script$#@62;") - Text3.SelStart + 9</p>
<p>Text3.SelText = ""</p>
<p></p>
<p>Loop</p>
<p>Form1.Caption = "正在转换$#@60;br$#@62;为换行符..."</p>
<p>"转换$#@60;br$#@62;为换行符</p>
<p>Do While InStr(1, LCase(Text3.Text), "$#@60;br$#@62;") $#@60;$#@62; 0</p>
<p></p>
<p>Text3.SelStart = InStr(1, LCase(Text3.Text), "$#@60;br$#@62;") - 1</p>
<p>Text3.SelLength = 4</p>
<p>Text3.SelText = "" + vbCrLf</p>
<p></p>
<p>Loop</p>
<p>Form1.Caption = "正在转换$#@60;p$#@62;$#@60;/p$#@62;为换行符..."</p>
<p>"转换$#@60;/p$#@62;为换行符</p>
<p>Do While InStr(1, LCase(Text3.Text), "$#@60;/p$#@62;") $#@60;$#@62; 0</p>
<p></p>
<p>Text3.SelStart = InStr(1, LCase(Text3.Text), "$#@60;/p$#@62;") - 1</p>
<p>Text3.SelLength = 4</p>
<p>Text3.SelText = "" + vbCrLf</p>
<p></p>
<p>Loop</p>
<p>Form1.Caption = "正在删除Html标记..."</p>
<p>"去掉其它的Html标记</p>
<p>Do While InStr(1, LCase(Text3.Text), "$#@60;") $#@60;$#@62; 0</p>
<p></p>
<p>Text3.SelStart = InStr(1, LCase(Text3.Text), "$#@60;") - 1</p>
<p>Text3.SelLength = InStr(1, LCase(Text3.Text), "$#@62;") - Text3.SelStart</p>
<p>Text3.SelText = ""</p>
<p></p>
<p>Loop</p>
<p>Form1.Caption = "正在转换"$#@60;"为"$#@60;"..."</p>
<p>"转换"$#@60;"为"$#@60;"</p>
<p>Do While InStr(1, LCase(Text3.Text), "$#@60;") $#@60;$#@62; 0</p>
<p></p>
<p>Text3.SelStart = InStr(1, LCase(Text3.Text), "$#@60;") - 1</p>
<p>Text3.SelLength = 4</p>
<p>Text3.SelText = "$#@60;"</p>
<p></p>
<p>Loop</p>
<p>Form1.Caption = "正在转换"$#@62;"为"$#@62;"..."</p>
<p>"转换"$#@62;"为"$#@62;"</p>
<p>Do While InStr(1, LCase(Text3.Text), "$#@62;") $#@60;$#@62; 0</p>
<p></p>
<p>Text3.SelStart = InStr(1, LCase(Text3.Text), "$#@62;") - 1</p>
<p>Text3.SelLength = 4</p>
<p>Text3.SelText = "$#@62;"</p>
<p></p>
<p>Loop</p>
<p>Form1.Caption = "正在转换"&"为"&"..."</p>
<p>"转换"&"为"&"</p>
<p>Do While InStr(1, LCase(Text3.Text), "&") $#@60;$#@62; 0</p>
<p></p>
<p>Text3.SelStart = InStr(1, LCase(Text3.Text), "&") - 1</p>
<p>Text3.SelLength = 5</p>
<p>Text3.SelText = "&"</p>
<p></p>
<p>Loop</p>
<p>Form1.Caption = "正在转换" "为空格符..."</p>
<p>"转换" "为" "</p>
<p>Do While InStr(1, LCase(Text3.Text), " ") $#@60;$#@62; 0</p>
<p></p>
<p>Text3.SelStart = InStr(1, LCase(Text3.Text), " ") - 1</p>
<p>Text3.SelLength = 6</p>
<p>Text3.SelText = " "</p>
<p></p>
<p>Loop</p>
<p>Form1.Caption = "正在转换"""为引号..."</p>
<p>"转换"""为引号</p>
<p>Do While InStr(1, LCase(Text3.Text), """) $#@60;$#@62; 0</p>
<p></p>
<p>Text3.SelStart = InStr(1, LCase(Text3.Text), """) - 1</p>
<p>Text3.SelLength = 6</p>
<p>Text3.SelText = """"</p>
<p></p>
<p>Loop</p>
<p>"去掉前后空格符</p>
<p>Text2.Text = Trim$(Text3.Text)</p>
<p>Form1.Caption = "转换成功!"</p>
<p>Form1.MousePointer = 0</p>
<p>Exit Sub</p>
<p></p>
<p>err:</p>
<p></p>
<p>Form1.Caption = "转换错误"</p>
<p>Form1.MousePointer = 0</p>
<p>MsgBox "转换时出错,请检查你的源文件!"</p>
<p>Exit Sub</p>
<p></p>
<p>End Sub</p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -