注册 登录
编程论坛 VB6论坛

VB读取txt中的文章段落 显示在 text1里

tieguanyin 发布于 2019-01-07 13:35, 2215 次点击
VB读取txt中的文章段落 显示在 text1里
提前已经准备好了文章 每篇文章都有数量不等的段落,特点就是每个段落之间都有1-2的空行,(如果只能1个空行才能实现也可以 我手动改txt倒也行)我需要 点击 按钮 就从文本中读取 随机3个段落 显示在 text1 和text2,text3里面注意 文本里可能有几百个段落 不一定的
只有本站会员才能查看附件,请 登录
4 回复
#2
wds12019-01-07 14:41
给你个思路。
1、把文章读取到内存A1,A1数组为vbcrlf
Public Sub Load_Txt(ByVal Txt_Filename, A1)
  Dim by As String
  Open Txt_Filename For Binary As #1
  by = Space(LOF(1))
  Get #2, , by
  A1 = Split(by, vbCrLf)
  DoEvents
  Close #1
End Sub
2、转换为不空段落数组A2
dim a2
index1=1
redim a2(1)
for i= 0 to ubound(a1)
 if a1(i)<>"" then
   a2(0)=index1'a2(0)记录不空段落总数,a2(1-index1)记录对应的index1个段落
   redim preserve a2(index1)   
   a2(index1)=index1
   index1=index1+1
 end if  
next
3、生成1-index之间的3个不同随机数
Randomize
for i=1 to 3
  rnd1=int(rnd(0)*index1+0.005)'产生1-index之间的随机数
  temp=a2(index1):a2(index1)=a2(rend1):a2(rnd1)=temp:将产生的随机数放到最后,为下次index-1个随机数不重复做准备
  text1(i)=a2(index1)'text1(1-3)为需要随机显示的3个不同段落  
  index=index-1
next
#3
风吹过b2019-01-07 17:07
Public Sub Load_Txt(ByVal Txt_Filename, A1)
  Dim by As String
  Open Txt_Filename For Binary As #1
  by = Space(LOF(1))
  Get #2, , by
  A1 = Split(by, vbCrLf)
  DoEvents
  Close #1
End Sub

在这句  A1 = Split(by, vbCrLf) 之前,加几个处理命令
by = Replace(by, vbCrLf & vbCrLf, vbCrLf)       '把二个段落标记换成一个

懒的计算最多有几个空行,那就把这行命令到这里写上几遍,如写三遍,可以干掉最多连续8个空段。

去掉了空段后,直接就分解得数组,可以不再判断是否空段,然后取内容。





[此贴子已经被作者于2019-1-7 17:08编辑过]

#4
tieguanyin2019-01-07 21:05
回复 2楼 wds1
已经实现了 谢谢你
#5
tieguanyin2019-01-07 21:05
回复 3楼 风吹过b
已经搞定了谢谢你
1