tsys 发表于 2011-12-26 19:05:29

请教如何过滤数组元素?[已解决]

本帖最后由 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:30:32

本帖最后由 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, "结果")
你的代码有误。。。
我注释的这行运行出错, 未寻找原因。

tsys 发表于 2011-12-26 19:42:51

回复 2# user3000


    不会吧,我换了多个电脑测试都正常的

user3000 可能没理解我说的意思,代码中要检测数组元素中是否含有“贴”字符,难免需要使用stringinstr函数,也麻烦user3000 别在上面的例子中插入代码,因为只是个获取数组的例子,希望写成func,如果需要过滤多个文字或者从ini文件读取自定义文字,那么显然很麻烦了{:face (382):}

afan 发表于 2011-12-26 20:28:32

可以在数组赋值之前用StringInStr()识别下。
也可以将数组转为字符串处理后再重新生成数组
具体看需要。

tsys 发表于 2011-12-26 21:01:28

回复 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的值定义后就无法改变了

yangyunbo 发表于 2011-12-27 01:01:49

学习了!学习au3脚本都会遇到!
页: [1]
查看完整版本: 请教如何过滤数组元素?[已解决]