在一维或二维数组内部进行进行搜索. 类似于_ArrayBinarySearch(), 但数组不需要排序.
#Include <Array.au3>
_ArraySearch(Const ByRef $avArray, $vValue [, $iStart = 0 [, $iEnd = 0 [, $iCase = 0 [, $iCompare= 0 [, $iForward = 1 [, $iSubItem = -1]]]]]])
$avArray | 要搜索的数组 |
$vValue | 要搜索的值 |
$iStart | [可选参数] 开始搜索的索引 |
$iEnd | [可选参数] 结束搜索的索引 |
$iCase | [可选参数] 如果设置为1, 区分大小写 |
$iCompare | [可选参数] 0 AutoIt 变量比较 (默认/default), "string" = 0, "" = 0 or "0" = 0 match 1 如果设置为1, 执行部分搜索 (StringInStr) 2 比较变量是否是相同类型和相同值 |
$iForward | [可选参数] 如果设置为0, 从结束到开始进行搜索(而不是从开始到结束) |
$iSubItem | [可选参数] 对于二维数组进行搜索的副索引 |
成功: | $vValue的索引 |
失败: | -1并设置@error |
@error: | 1 - $avArray不是数组 |
2 - $avArray不是一维数组 | |
4 - $iStart 大于$iEnd | |
6 - $vValue在数组中没找到 | |
7 - $avArray 维数太多 | |
(3, 5 - 废弃的错误代码) |
#include <Array.au3>
;===============================================================================
; 示例 1 (使用一维数组)
;===============================================================================
Local $avArray[6] = [ _
"String0, SubString0", _
"String1, SubString1", _
"String2, SubString2", _
"String3, SubString3", _
"String4, SubString4", _
"String5, SubString5"]
_ArrayDisplay($avArray, "一维数组")
Local $sSearch = InputBox("一维数组搜索演示", "请输入要搜索的值.")
If @error Then Exit
Local $iIndex = _ArraySearch($avArray, $sSearch, 0, 0, 0, 1)
If @error Then
MsgBox(4096, "没有找到匹配结果", "“" & $sSearch & "”搜索完毕,没有结果可显示。")
Else
MsgBox(4096, "搜索成功", "“" & $sSearch & "”搜索完毕,位于数组中第“" & $iIndex & "”个索引中。")
EndIf
;===============================================================================
; 示例 2 (使用二维数组)
;===============================================================================
Local $avArray[6][2] = [ _
["String0", "SubString0"], _
["String1", "SubString1"], _
["String2", "SubString2"], _
["String3", "SubString3"], _
["String4", "SubString4"], _
["String5", "SubString5"]]
_ArrayDisplay($avArray, "二维数组")
$sSearch = InputBox("二维数组搜索演示", "请输入要搜索的值。")
If @error Then Exit
Local $sColumn = InputBox("二维数组搜索演示", "请输入搜索的方向:" & @CRLF & "从开始到结束进行搜索输入“1”" & @CRLF & "从结束到开始进行搜索输入“0”")
If @error Then Exit
$sColumn = Int($sColumn)
$iIndex = _ArraySearch($avArray, $sSearch, 0, 0, 0, 1, 1, $sColumn)
If @error Then
MsgBox(4096, "没有找到匹配结果", "“" & $sSearch & "”搜索完毕,没有结果可显示。")
Else
MsgBox(4096, "搜索成功", "“" & $sSearch & "”搜索完毕,位于数组中第“" & $iIndex & "”个索引中。")
EndIf