vb怎样在生成txt文件时删除重复的行?
下面是一个vb程序在提取网页的数字内容并生成txt文件(生成的内容是一行一行排列的)的过程,但这个过程中提取的内容有重复的行。怎样让最后生成的txt文件中自动去除重复的行...
下面是一个vb程序在提取网页的数字内容并生成txt文件(生成的内容是一行一行排列的)的过程,但这个过程中提取的内容有重复的行。怎样让最后生成的txt文件中自动去除重复的行呢?
For i = 1 To 8
h = WebBrowser1.Document.All.tags("table").Item(1).rows.Item(i).cells.Item(1).innerText
If temp <> h Then
P = P + 1
Print #1, h
temp = h
End If
Next 展开
For i = 1 To 8
h = WebBrowser1.Document.All.tags("table").Item(1).rows.Item(i).cells.Item(1).innerText
If temp <> h Then
P = P + 1
Print #1, h
temp = h
End If
Next 展开
5个回答
展开全部
楼上(用户未被屏蔽)的方法很好,只是存在一个小漏洞,修改如下:
temp=";"
For i = 1 To 8
h = WebBrowser1.Document.All.tags("table").Item(1).rows.Item(i).cells.Item(1).innerText
if instr(1,temp,";" & h & ";") = 0 then '查找字符串,有的话就返回位置,没有返回0
P = P + 1
Print #1, h
temp = temp & h & ";" '把数值组成一个字符串
end if
next
temp=";"
For i = 1 To 8
h = WebBrowser1.Document.All.tags("table").Item(1).rows.Item(i).cells.Item(1).innerText
if instr(1,temp,";" & h & ";") = 0 then '查找字符串,有的话就返回位置,没有返回0
P = P + 1
Print #1, h
temp = temp & h & ";" '把数值组成一个字符串
end if
next
更多追问追答
追问
小漏洞在哪里,是什么,会导致什么问题?
追答
比如说已经有数据 235或56,当前读出的数据是 5的话,楼上的判断方法会认为是已经重复而予以删除的。
因为 instr("235;56","5")>0
展开全部
Dim strtmp() As String
For i = 1 To 8
h = WebBrowser1.Document.All.tags("table").Item(1).rows.Item(i).cells.Item(1).innerText
If temp <> h Then
If p = 0 Then
ReDim Preserve strtmp(p) As String
strtmp(p) = h
Else
For j = 0 To UBound(strtmp)
If strtmp(j) = h Then bln = True: Exit For
Next
If bln = False Then
p = p + 1
ReDim Preserve strtmp(p) As String
strtmp(p) = h
End If
bln = False
End If
temp = h
End If
Next
For i = 0 To UBound(strtmp)
Print #1, strtmp(i)
Next
For i = 1 To 8
h = WebBrowser1.Document.All.tags("table").Item(1).rows.Item(i).cells.Item(1).innerText
If temp <> h Then
If p = 0 Then
ReDim Preserve strtmp(p) As String
strtmp(p) = h
Else
For j = 0 To UBound(strtmp)
If strtmp(j) = h Then bln = True: Exit For
Next
If bln = False Then
p = p + 1
ReDim Preserve strtmp(p) As String
strtmp(p) = h
End If
bln = False
End If
temp = h
End If
Next
For i = 0 To UBound(strtmp)
Print #1, strtmp(i)
Next
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if instr(1,temp,cstr(h)) = 0 then '查找字符串,有的话就返回位置,没有返回0
P = P + 1
Print #1, h
temp = temp & ";" & cstr(h) '把数值组成一个字符串
end if
P = P + 1
Print #1, h
temp = temp & ";" & cstr(h) '把数值组成一个字符串
end if
追问
楼下的说你的代码有问题,可以更改一下么?
追答
(橡皮树的博客)说的很对,如果你的数据长短不一的话,有可能出现误判,他提供的方法也是可行的,给数据头尾加上";"(分号)做标志。
temp=";" ‘字符串是通过temp = temp & cstr(h) & ";"来组织,所以第一位前面必须有分号。
For i = 1 To 8
h = WebBrowser1.Document.All.tags("table").Item(1).rows.Item(i).cells.Item(1).innerText
if instr(1,temp,";" & cstr(h) & ";") = 0 then '查找字符串,有的话就返回位置,没有返回0,这里用cstr(h)是仿制你没有严格定义变量h
P = P + 1
Print #1, h
temp = temp & cstr(h) & ";" '把数值组成一个字符串
end if
next
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
俺建议先放到TEXTBOX或LIST里面,然后保存前再处理
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
吊死扶伤多福多寿飞
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询