请教如何过滤数组元素?[已解决]
本帖最后由 tsys 于 2011-12-26 21:04 编辑拿http://top.baidu.com/这个链接举例,运行下列代码后,数组内部频繁出现“贴吧”之类的元素,希望的结果是如果“数组元素内”出现“贴”字符,则删除该数组或不加入数组,
小弟尝试多次,屡试屡败,不得不求教论坛各位大大,希望能另写个function不在下列代码中做手脚#include<array.au3>
#include<ie.au3>
Local $IEObj = _IECreate("http://top.baidu.com/",0,0,1,0)
Local $oLinks = _IELinkGetCollection($IEObj),$temp ,$Array
Local $i = 0
For $oLink in $oLinks ;查找符合项目
$i+=1
ReDim $Array[$i]
$Array[$i-1] = $oLink.innerText
Next
_IEQuit($IEObj)
_ArrayDisplay($Array,"处理前的数组") 本帖最后由 user3000 于 2011-12-26 19:33 编辑
#include<array.au3>
#include<ie.au3>
Local $IEObj = _IECreate("http://top.baidu.com/", 0, 0, 1, 0)
Local $oLinks = _IELinkGetCollection($IEObj)
Local $temp, $Array
For $oLink In $oLinks ;查找符合项目
If $oLink.innerText <> '贴吧' Or $oLink.innerText <> 0 Then _ArrayAdd($Array, $oLink.innerText); 打成‘帖吧’了
Next
;_IEQuit($IEObj)
$Array = UBound($Array) - 1
_ArrayDisplay($Array, "结果")
你的代码有误。。。
我注释的这行运行出错, 未寻找原因。 回复 2# user3000
不会吧,我换了多个电脑测试都正常的
user3000 可能没理解我说的意思,代码中要检测数组元素中是否含有“贴”字符,难免需要使用stringinstr函数,也麻烦user3000 别在上面的例子中插入代码,因为只是个获取数组的例子,希望写成func,如果需要过滤多个文字或者从ini文件读取自定义文字,那么显然很麻烦了{:face (382):} 可以在数组赋值之前用StringInStr()识别下。
也可以将数组转为字符串处理后再重新生成数组
具体看需要。 回复 4# afan
弄了很久一直都是数组超界,对于我这个菜鸟,以下是艰难的调试过程:#include<array.au3>
#include<ie.au3>
Local $temp =
Local $n,$j=0
_ArrayDisplay($temp)
For $n = 0 To UBound($temp)-1
MsgBox(0,"","$n变量值为:"&$n&" $j变量为:"&$j)
If StringInStr($temp[$n-$j],"8") Then
_ArrayDelete($temp,$n-$j)
_ArrayDisplay($temp)
$j+=1
EndIf
Next
_ArrayDisplay($temp,"处理后的数组") 好在终于将这个问题解决了,也才明白,for $i =0 to $a $a的值定义后就无法改变了 学习了!学习au3脚本都会遇到!
页:
[1]