回 帖 发 新 帖 刷新版面

主题:我正尝试着编一个TXT分割程序,受阻,附上有错的代码,求助!

程序目的是将TXT在含特定字符的行分割。例如一部小说,将它在“第×章”处分开。
我的想法是使用LINE INPUT逐行将原文件读入,再写入预先创建的空文件里。使用LIKE检查是否含有指定的字(编程时为了方便,直接写在了代码里,没有使用文本框输入),若有,则另开文件,继续写入。可实际运行时,只能生成一个文件,且其中多出了很多乱码,这是怎么回事?鄙人只学了一学期VB,肯请指教!
我写的错误代码:
Private mubiao As String, chuan As String, haoma As Integer

Private Sub Command1_Click()
Dim i As Integer
haoma = 2
Open "D:\" & i + 2 & ".txt" For Append As #haoma
Do While Not EOF(1)
 Line Input #1, chuan
  If chuan Like "小说名称" Then
   Close #haoma
   haoma = haoma + 1
   Open "D:\" & i + 3 & ".txt" For Append As #haoma
   Print #haoma, chuan
  Else
   Print #haoma, chuan
  End If
 i = i + 1
Loop
Close
End Sub

Private Sub Dir1_Change()
 File1.Path = Dir1.Path
End Sub

Private Sub drive1_change()
  Dir1.Path = Drive1.Drive
End Sub

Private Sub File1_Click()
mubiao = File1.Path & "\" & File1.FileName
Open mubiao For Input As #1

End Sub


回复列表 (共18个回复)

11 楼

你下载的不是纯文本,或者其中有非Ascii字符或其它编码的字符,请下载我刚才发的文件(地址:http://file.pfan.cn/upfile/200807200939979.rar),用我那个分割文本的代码试试

12 楼

我晕,这种事讨论了半天,人家说“多出了很多乱码”呢,请问要分割的这个文件是什么格式的哦???????????????????????

13 楼

UTF-8 有签名

= =;是网站的?
不管小说的错别字的话,可以直接从网站上读数据嘛!~

14 楼

……一放假什么都忘了,不好意思了各位……呃,11楼的朋友看了我发的那个文件了吗?那我是不是可以认为含有Unicode的TXT是没法用VB编的程序正常分割的?……那,就瞎了……
12楼,我的就是TXT。
13楼,第一句话太专业了,能解释一下吗?

15 楼

你附件中的文本是不是经过处理的?还是从网上下来就是这个样子?
我也经常从网上下载小说,一般都是TXT文本的,也有htm文本的,这个需要转换一下,去掉htm标记。如果是Unicode格式或UTF-8格式的,也必须要先进行转换。这三种转换的代码请参考我去年9月份的发贴“编写超级记事本必需的16个功能源代码”。只有纯文本格式才能正确地进行文本分割。另外,你最好准备一个HEX编辑器,在观察分析文本格式时有用,我去年9月份也发了一贴“Hex编辑器源代码”,你有兴趣可下载编译。

16 楼

文件格式和文件后缀名不是一回事!

17 楼


那我就更糊涂了……

18 楼

在网上调查了一下,大致搞清楚ANSI和UNICODE是怎么回事了。总之ANSI包含GB2312和GBK,对吧。我尝试着将我要分割的文本另存为ANSI编码方式的,还好,除了有部分空格变成了问号,几处间隔号变成了圆球,似乎就没有什么其他问题了。在阅读了各位提供的代码之后,我做了一些小改进,在此奉上!
Option Explicit
Private Root As String, Goal As String

Private Sub Command1_Click()
Dim i As Integer, Part As String
Open Root For Input As #1
Open Goal & 0 & ".txt" For Output As #2
Do While Not EOF(1)
 Line Input #1, Part
 If Option1.Value = True Then
   Part = "    " & LTrim(Part)
 End If
  If Part Like "*第*章*" Then
   Close #2
   i = i + 1
   Open Goal & i & ".txt" For Output As #2
   Print #2, Part
  Else
   Print #2, Part
  End If
Loop
Close
Caption = "TXT分段器(分割完成)"
End Sub


Private Sub drive1_change()
  Caption = "TXT分段器(已就绪)"
  Dir1.Path = Drive1.Drive
End Sub


Private Sub Dir1_Change()
 Caption = "TXT分段器(已就绪)"
 File1.Path = Dir1.Path
End Sub


Private Sub Drive2_Change()
   Caption = "TXT分段器(已就绪)"
   Dir2.Path = Drive2.Drive
End Sub
Private Sub Dir2_Change()
   Caption = "TXT分段器(已就绪)"
   Goal = Dir2.Path & "\" & "分章"
End Sub

Private Sub File1_Click()
 Caption = "TXT分段器(已就绪)"
 Root = File1.Path & "\" & File1.FileName
End Sub

还望各位不吝赐教!

我来回复

您尚未登录,请登录后再回复。点此登录或注册