[已解决]如何提取数组里的一部分到一新数组?
本帖最后由 ioripalm 于 2013-3-6 10:35 编辑比如有个数组 $avarray有100个元素,我想提取索引25-55的元素组成一个新的数组,有这样的函数直接生成吗?
我现在是用for循环+_ArrayAdd来生成新数组。觉得麻烦! 回复 1# ioripalm
函数,就是这样写成的吗?
对自己没有信心,觉得自己写的不如别人写成的现成函数好? 本帖最后由 happytc 于 2013-2-28 17:49 编辑
估计你喜欢象这种的
#include <Array.au3>
Local $aArray = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
Local $aRes = _ExtractSubArray($aArray, 1, 4)
_ArrayDisplay($aRes)
Func _ExtractSubArray(ByRef $aArray, $iStart, $iEnd, $iFlag = 0)
Local $iCount = 0
If Not IsArray($aArray) Then Return SetError(1, 1, 0)
If Not (IsInt($iStart) And IsInt($iEnd) And $iStart >= 0 And $iEnd >=0) Then Return SetError(2, 2, 0)
If $iStart > $iEnd Then Return SetError(3, 3, 0)
If $iFlag Then
Local $aSub[$iEnd - $iStart + 2]
$aSub = UBound($aSub) - 1
For $i = $iStart To $iEnd
$iCount += 1
$aSub[$iCount] = $aArray[$i]
Next
Else
Local $aSub[$iEnd - $iStart + 1]
For $i = $iStart To $iEnd
$aSub[$iCount] = $aArray[$i]
$iCount += 1
Next
EndIf
Return $aSub
EndFunc
回复 3# happytc
感觉比我那个还复杂 算了! 本帖最后由 Qokelate 于 2013-2-28 19:52 编辑
#include <Array.au3>
Local $szStr = 'askdfjsajdfjsaklfjaskjfklasjfdjasklfjlaskjflksajflkasfasfasfdasfasdfasdfasfasofjklasdfmlsamfklasjfjasfdasfsa;sjfasjkfjasfasf'
Local $aTemp = StringSplit($szStr, '', 3)
Local $aReDim = FuncA($aTemp)
_ArrayDisplay($aReDim)
Exit
Func FuncA($aArray)
For $a = 25 To 55
$aArray[$a - 25] = $aArray[$a]
Next
ReDim $aArray
Return $aArray
EndFunc ;==>FuncA
难道是这样? 回复 5# Qokelate
这样也行,就是通用性不好。 本帖最后由 Qokelate 于 2013-2-28 20:17 编辑
回复 6# xms77
3楼那个兼容好的,人家嫌复杂
Func ExtractSubArray(ByRef $aArray, $iStart = 0, $iEnd = Default, $iStep = 1)
If Default = $iEnd Then $iEnd = UBound($aArray, 1) - 1
If $iEnd < $iStart Then $iStep = -1
Local $iNewBound = Abs($iEnd - $iStart) + 1
Local $aNewArray[$iNewBound]
Local $iCount = 0
For $a = $iStart To $iEnd Step $iStep
$aNewArray[$iCount] = $aArray[$a]
$iCount += 1
Next
Return $aNewArray
EndFunc ;==>ExtractSubArray
代码易懂容易维护就是好的。 本帖最后由 netegg 于 2013-3-2 12:03 编辑
$string = _arraytostring($aA,'|',25,55)
$aA2=stringsplit($string,'|',2)
dim $aA
redim $aA
$aA = _arrayreverse($aA)
redim $aA
$aA = _arrayreverse($aA) 回复 9# netegg
果然厉害,谢谢! $string = _arraytostring($aA,'|',25,55)
$aA2=stringsplit($string,'|',2)
dim $aA
redim $aA[ ...
netegg 发表于 2013-3-2 12:00 http://www.autoitx.com/images/common/back.gif
蛋蛋这两种方法都是不错的思路。 回复 10# ioripalm
不嫌复杂,不嫌长了?
因为在#Include里,看不到了,哈%…… 回复 12# happytc
的确是这样,简单的语句好记,而且思路可以长见识!
页:
[1]