qingbird99 发表于 2013-5-27 16:50:37

_arrayseach 不能搜索文本中的ip地址?

本帖最后由 qingbird99 于 2013-6-1 23:51 编辑

有一个文本ip.txt,格式如下:
31250130|137.104.148.11
31250028|192.168.0.186
小弟初学,想先读取本机地址到文本中匹配然后把第一列的值取出,开始用用数组读出,显示正常,用_arrayseach ,总是返回-1,#include<array.au3>
#Include <File.au3>
Dim $aArray1,$iIndex,$c1
_FileReadToArray(@WorkingDir & "\ip.txt",$aArray1)
_ArrayDisplay($aArray1);显示正常
$c1=@IPAddress1;本机地址:192.168.0.186
MsgBox(4096,"测试",$c1)
$iIndex=_ArraySearch($aArray1,$c1)
;返回-1
MsgBox(4096,"测试",$iIndex)
$c2=$aArray1[$iIndex]
MsgBox(4096,"测试",$c2)
总是无法查找,怎么样才能把192.168.0.186看成一个整体搜索,还是要转换数值,字符,怎么才能实现?请各位大侠看看

afan 发表于 2013-5-27 18:28:39

数组搜索需匹配全部,而不能只匹配其中的某字符串,所以如此搜索不行,可以用正则,简单高效。Local $str = FileRead(@ScriptDir & '\ip.txt')
Local $sFind = StringRegExpReplace($str, '(?si).*?(\V+?)\|\Q' & @IPAddress1 & '\E(?:\v+.*|$)', '\1')
If @extended > 0 Then
        MsgBox(64, ':)', $sFind)
Else
        MsgBox(48, ':(', '未匹配')
EndIf

qingbird99 发表于 2013-5-28 00:19:20

不应该啊,我如果让$c1=31250028,是可以搜索出的,得出$iIndex=2的,但是$c1="31250028",就是$iIndex=-1,搜索不出,究竟是什么原因啊?,还有这种情况,用什么方法来做最好,再请教
页: [1]
查看完整版本: _arrayseach 不能搜索文本中的ip地址?