asp中对数组的操作功能太弱,所以写了一个ArrayList类(参考c#中的ArrayList类),可以满足对数组操作的大部分功能.
对数组操作要注意的一些问题:
1,LBound()和UBound()是取得数组里最小的和最大的索引值,并不是数组的长度,
数组的长度是:UBound()+1
2,有时要动态改变数组大小,所以要先声明一个空的数组:
Dim arr()
使用这种方式声明的空数组如果用LBound()和UBound()取值的话会出现错误,但可以使用For Each:
Dim arr()
For Each v In arr
Response.Write v
Next
这样就不会出错了
另一种声明空数组的方法是:
Dim arr
arr=array()
这样的话使用LBound(arr)和UBound(arr)则分别返回0和-1.
ArrayList类功能描述:
'类名:ArrayList.asp '名称:数组操作类 '日期:2007-11-6 '作者:西楼冷月 '网址:www.xilou.net | www.chinaCMS.org '版权:转载请注名出处,作者 修改记录: '---2007-11-11 '1,对所有的错误提示进行修改,提示更加清晰 '2,Add()方法返回当前添加元素的索引值 '3,增加一个内部方法:isNum()用于判断是否是数字 '4.增加一个可读写的属性:Item,用于简化对ArrayList取值赋值的操作 '5,增加一个内部方法:setValue(),可以根据普通值或对象分别赋值 '6,往ArrayList添加的值可以是一个对象 '/***************ArrayList属性*************** 'ArrayList.Length:数组长度 'ArrayList.Item:获取或设置指定索引处的元素 '***************ArrayList方法*************** '---数组添加: 'ArrayList.Add(v):在ArrayList尾部添加一个元素 'ArrayList.AddArray(arr):在ArrayList尾部附加一个数组 'ArrayList.Insert(index,v):在ArrayList的index处插入一个值,原先的index和之后的值都往后移 'ArrayList.InsertArray(index,arr):在ArrayList的index处插入一个数组,原先的index和之后的值都往后移 '---数组更新: 'ArrayList.Update(index,v):更新索引为index处的值 '---数组删除: 'ArrayList.Remove(v):从ArrayList中删除第一个匹配项,注意是第一个,将会得到一新的数组 'ArrayList.RemoveAt(index):移除ArrayList的指定索引处的元素,将会得到一新的数组 'ArrayList.Splice(m,n):从一个数组中移除从索引m到索引n的一段元素,并返回这段移除的数组 'ArrayList.Clear()清空数组,数组将变为空,长度Length=0 '---数组查找: 'ArrayList.IndexOf(v):查找,返回ArrayList第一个匹配项的索引。没找到返回-1。 'ArrayList.LastIndexOf(v):返回ArrayList的最后一个匹配项的索引。没找到返回-1。 '---返回数组中的值: 'ArrayList.GetValue(index)取得ArrayList某个索引的值 'ArrayList.Slice(m,n)返回ArrayList从m到n的一段数组 'ArrayList.GetArray()返回整个Array数组 '---数组其他操作: 'ArrayList.Reverse()将整个 ArrayList 中元素的顺序反转 'ArrayList.Implode(separator)返回字符串值,元素由指定的分隔符分隔开来 '******************************/ ___________________________________________________________________________________ <% '/****************************** '类名:ArrayList '名称:数组操作类 '日期:2007-11-6 '作者:西楼冷月 '网址:www.xilou.net | www.chinaCMS.org '描述:对数组的各种操作 '版权:转载请注名出处,作者 '****************************** '最后修改:2007-11-11 '修改次数:1 '修改说明: '---2007-11-11 '1,对所有的错误提示进行修改,提示更加清晰 '2,Add()方法返回当前添加元素的索引值 '3,增加一个内部方法:isNum()用于判断是否是数字 '4.增加一个可读写的属性:Item,用于简化对ArrayList取值赋值的操作 '5,增加一个内部方法:setValue(),可以根据普通值或对象分别赋值 '6,往ArrayList添加的值可以是一个对象 '目前版本:v1.1 '***************ArrayList属性*************** 'ArrayList.Length:数组长度 'ArrayList.Item:取得ArrayList某个索引的值,相当于ArrayList.GetValue()方法 '***************ArrayList方法*************** '---数组添加: 'ArrayList.Add(v):在ArrayList尾部添加一个元素,返回该元素所在的索引值 'ArrayList.AddArray(arr):在ArrayList尾部附加一个数组 'ArrayList.Insert(index,v):在ArrayList的index处插入一个值,原先的index和之后的值都往后移 'ArrayList.InsertArray(index,arr):在ArrayList的index处插入一个数组,原先的index和之后的值都往后移 '---数组更新: 'ArrayList.Update(index,v):更新索引为index处的值 '---数组删除: 'ArrayList.Remove(v):从ArrayList中删除第一个匹配项,注意是第一个,将会得到一新的数组 'ArrayList.RemoveAt(index):移除ArrayList的指定索引处的元素,将会得到一新的数组 'ArrayList.Splice(m,n):从一个数组中移除从索引m到索引n的一段元素,并返回这段移除的数组 'ArrayList.Clear()清空数组,数组将变为空,长度Length=0 '---数组查找: 'ArrayList.IndexOf(v):查找,返回ArrayList第一个匹配项的索引。没找到返回-1。 'ArrayList.LastIndexOf(v):返回ArrayList的最后一个匹配项的索引。没找到返回-1。 '---返回数组中的值: 'ArrayList.GetValue(index)取得ArrayList某个索引的值 'ArrayList.Slice(m,n)返回ArrayList从m到n的一段数组 'ArrayList.GetArray()返回整个Array数组 '---数组其他操作: 'ArrayList.Reverse()将整个 ArrayList 中元素的顺序反转 'ArrayList.Implode(separator)返回字符串值,元素由指定的分隔符分隔开来 '******************************/ Class ArrayList Private arrList'//内部数组 Private arrLength'//记录数组的长度 Private Sub Class_Initialize() arrList=Array() arrLength=0 End Sub Private Sub Class_Terminate() Erase arrList End Sub '//数组长度,只读 Public Property Get Length Length=arrLength End Property '//获取或设置指定索引处的元素 Public Default Property Get Item(index) If Not isNum(index) Then showErr "ArrayList.Item(index),非法的参数index":Exit Property End If If index < 0 or index > arrLength-1 Then showErr "ArrayList.Item(index),index下标越界":Exit Property End If setValue Item,arrList(index) End Property Public Property Let Item(index,v) If Not isNum(index) Then showErr "ArrayList.Item(index,v),非法的参数index":Exit Property End If If index < 0 or index > arrLength-1 Then showErr "ArrayList.Item(index,v),index下标越界":Exit Property End If setValue arrList(index),v End Property '//取得某个索引的值 Public Function GetValue(index) If Not isNum(index) Then showErr "ArrayList.GetValue(index),非法的参数index":Exit Function End If On Error Resume Next setValue GetValue,arrList(index) If Err Then showErr "ArrayList.GetValue(index),index"&Err.Description:Err.Clear:Exit Function End Function '//返回整个Array数组 Public Function GetArray() GetArray=arrList End Function '//添加元素,将值添加到ArrayList的结尾处,返回当前元素的索引值 Public Function Add(v) ReDim Preserve arrList(arrLength) setValue arrList(arrLength),v Add=arrLength arrLength=arrLength+1 End Function '//将数组添加到ArrayList的结尾处 Public Sub AddArray(arr) If Not IsArray(arr) Then showErr "ArrayList.AddArray(arr),arr参数不是数组:":Exit Sub Dim I,L,J On Error Resume Next If arrLength = 0 Then '//如果ArrayList为空则直接附值 arrList=arr arrLength=arrLength+UBound(arr)+1 Else L=arrLength+UBound(arr)'//新的数组长度 J=0 ReDim Preserve arrList(L) For I = arrLength To L setValue arrList(I),arr(J) J=J+1 Next arrLength=arrLength+UBound(arr)+1 End If If Err Then showErr "ArrayList.AddArray(arr)"&Err.Description:Err.Clear:Exit Sub End Sub '//将元素插入ArrayList的指定index索引处,原有的arrList(index)及后面的元素都往后排 Public Sub Insert(index,v) If Not isNum(index) Then showErr "ArrayList.Insert(index,v),非法的参数index":Exit Sub End If Dim I,v2 If index
本文转自:http://hi.baidu.com/dumao/blog/item/a736b21b31790c1c8618bf37.html