日期:2021年09月02日
作者:Commas
注释:VB6数组的方法比较少,需要从源数组切片出一个新的数组,实现了类似JS数组的slice方法,目前暂不支持传入负数;
一、VB6版本的数组slice()
Public Function Slice(ByRef arySrc As Variant, ByVal lngStart As Long, ByVal lngEnd As String) As Variant
On Error Resume Next
'函数说明:返回一个新的数组,包含从 lngStart 到 lngEnd (不包括该元素)的 arySrc 中的元素。
'创建作者:Commas
'创建时间:2020-09-01
'修改时间:
'------传参说明------
'arySrc:源数组
'lngStart:规定从何处开始选取,lngStart≥0
'lngEnd:规定从何处结束选取。该参数是数组片断结束处的数组下标,;lngStart≥0;
'------传参说明------
If lngStart >= lngEnd Then
'返回一个空字符串数组,与JS的slice保持一致
Slice = Array("")
Else
Dim strTemp As String, aryTemp() As String, sSpt As String, iSpt As Long
sSpt = vbTab
'(1)复制数组
strTemp = Join(arySrc, sSpt)
aryTemp = Split(strTemp, sSpt)
'Debug.Print "src=", strTemp
'(2)获取需要截取掉的字符位置
ReDim Preserve aryTemp(lngStart)
'Debug.Print strTemp, "-", Join(aryTemp, sSpt)
iSpt = Len(Join(aryTemp, sSpt)) - Len(aryTemp(lngStart)) + 1
'(3)获得截取后的数组
strTemp = Mid(strTemp, iSpt)
aryTemp = Split(strTemp, sSpt)
If lngEnd <> 0 And lngEnd <= UBound(arySrc) + 1 Then
ReDim Preserve aryTemp(lngEnd - lngStart - 1)
End If
'Debug.Print "dest=", Join(aryTemp, sSpt)
Slice = aryTemp
End If
End Function
二、VBS版本的数组slice()
Function Slice(arySrc, lngStart, lngEnd)
On Error Resume Next
'函数说明:返回一个新的数组,包含从 lngStart 到 lngEnd (不包括该元素)的 arySrc 中的元素。
'创建作者:Commas
'创建时间:2020-09-01
'修改时间:
'------传参说明------
'arySrc:源数组
'lngStart:规定从何处开始选取,lngStart≥0
'lngEnd:规定从何处结束选取。该参数是数组片断结束处的数组下标,;lngStart≥0;
'------传参说明------
If lngStart >= lngEnd Then
'返回一个空字符串数组,与JS的slice保持一致
Slice = Array("")
Else
Dim strTemp, aryTemp, sSpt, iSpt
sSpt = vbTab
'(1)复制数组
strTemp = Join(arySrc, sSpt)
aryTemp = Split(strTemp, sSpt)
'Debug.Print "src=", strTemp
'(2)获取需要截取掉的字符位置
ReDim Preserve aryTemp(lngStart)
'Debug.Print strTemp, "-", Join(aryTemp, sSpt)
iSpt = Len(Join(aryTemp, sSpt)) - Len(aryTemp(lngStart)) + 1
'(3)获得截取后的数组
strTemp = Mid(strTemp, iSpt)
aryTemp = Split(strTemp, sSpt)
If lngEnd <> 0 And lngEnd <= UBound(arySrc) + 1 Then
ReDim Preserve aryTemp(lngEnd - lngStart - 1)
End If
'Debug.Print "dest=", Join(aryTemp, sSpt)
Slice = aryTemp
End If
End Function
三、VB6使用slice()的示例
Dim strTemp As String, aryTemp As Variant
'数值数组
aryTemp = Array(10, 20, 30)
aryTemp = Slice(aryTemp, 1, 3)
Debug.Print Join(aryTemp, ",")
//立即窗口输出:20,30
'字符串数组
aryTemp = Array("aaa", "bbb", "ccc")
aryTemp = Slice(aryTemp, 1, 3)
Debug.Print Join(aryTemp, ",")
//立即窗口输出:bbb,ccc
立即窗口输出:
20,30
bbb,ccc
版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/120067330