热门文章
 
在 VBScript 中使用
生成目录树结构的类
远程获取类Asp xmlHt
遭遇ASP类的事件设计
asp类方法初探(广告流量统
硬盘文件搜索代码(ASP类)
asp:debug类
ASP中一个字符串处理类
操作xml的类
读取XML的类 XmlRea
 推荐文章
 
异常类Exception
我眼中的ASP新框架
asp类方法初探(广告流量统
硬盘文件搜索代码(ASP类)
远程获取类Asp xmlHt
ASP中一个字符串处理类
Cookie,Session
代替缓存使用的ini类
分页类Pager
生成目录树结构的类
文件操作类
常用的工具类Utility
输入验证类Validator
asp:debug类
参考c#中的ArrayLis
用MVC模型引导你的WEB设
 
你现在的位置:您现在的位置是: 中国ASP>>ASP教程>>asp类
数组操作类

Option Explicit

Class cArr
     Private tMin      ''//最小值 thisMin
     Private tMax      ''//最大值
     Private tStr      ''//数组串
     Private tSortStr''//排序串,当对同一数组串进行操作时避免多次排序操作
     Private tLength      ''//元素个数

     Private Sub Class_Initialize
           tMin      =0
           tMax      =0
           tStr      ="0"
           tLength      =0
           tSortStr=""
     End Sub

     ''//获得最小值
     Property Get cMin
           If tMin=0 Then
                 Dim sStr
                 If tSortStr="" Then
                       sStr=Split(cSort,",")
                 Else
                       sStr=Split(tSortStr,",")
                 End If
                 tMin=sStr(0)
           End If
           cMin=tMin
     End Property

     ''//获得最大值
     Property Get cMax
           If tMax=0 Then
                 Dim sStr
                 If tSortStr="" Then
                       sStr=Split(cSort,",")
                 Else
                       sStr=Split(tSortStr,",")
                 End If
                 tMax=sStr(Ubound(sStr))
           End If
           cMax=tMax
     End Property

     Property Get Length
           If tStr="" Or tStr=0 Then
                 Length      =0
           Else
                 tLength      =Ubound(Split(tStr,","))+1
                 Length      =tLength
           End If
     End Property

     ''//将数组串赋给属性
     Property Let srcStr(str)
           If str="" Then
                 tStr="0"
           Else
                 tStr=str
           End If
     End Property

     ''//排序,倒序
     Public Function cSort
           Dim Arr,i
           Redim Arr(Ubound(Split(tStr,",")))
           Dim tmp,j
           For i=0 to Ubound(Arr)
                 Arr(i)=CDBL(Split(tStr,",")(i))
           Next
           For I= 0 to Ubound(Arr)
                 For  j=i+1 to Ubound(Arr)
                       If Arr(i)<Arr(j) Then
                             tmp      =Arr(i)
                             Arr(i)      =Arr(j)
                             Arr(j)      =tmp
                       End If
                 Next
           Next
           tSortStr=Join(Arr,",")
           cSort=tSortStr
     End Function
   
     ''//顺序
     Public Function cSortAsc
           Dim tmp,i,Arr
           If tSortStr="" Then
                 tmp=cSort
           Else
                 tmp=tSortStr
           End If
           Redim Arr(Ubound(Split(tmp,",")))
           Arr=Split(tmp,",")
           For i= Ubound(Arr) to 0 Step -1
                 cSortAsc=cSortAsc & Arr(i) & ","
           Next
           cSortAsc=Left(cSortAsc,Len(cSortAsc)-1)
     End Function

     ''//在未尾加元素
     Public Function AddItem(str)
           If tStr="" OR tStr="0" Then
                 tStr=str
           Else
                 tStr=tStr & "," & str
           End If
           tMin      =0
           tMax      =0
           tSortStr=""
           tLength      =tLength + 1
           AddItem      =tStr
     End Function

     ''//前部加元素
     Public Function AddItemBefore(str)
           If tStr="" OR tStr="0" Then
                 tStr=str
           Else
                 tStr=str & "," & tStr
           End If
           tMin      =0
           tMax      =0
           tSortStr=""
           tLength      =tLength + 1
           AddItemBefore=tStr
     End Function

     ''//移除元素
     Public Function RemoveItem(str)
           tStr      =Replace("," & tStr & "," , "," & str & "," , ",")
           tStr      =Mid(tStr,2,Len(tStr)-2)
           tMin      =0
           tMax      =0
           tSortStr=Replace("," & tSortStr & "," , "," & str & "," , ",")
           tSortStr=Mid(tSortStr,2,Len(tSortStr)-2)
           tLength      =0
           RemoveItem=tStr
     End Function

     ''//在索引位置加元素
     Public Function AddItemI(index,str)
           If index>=Length Then
                 AddItem(str)
                 Exit Function
           End If
           If index<=0 Then
                 AddItemBefore(str)
                 Exit Function
           End if
         
           Dim Arr,i,tmps
           Redim Arr(Ubound(Split(tStr,",")))
           Arr=Split(tStr,",")
           For i=0 to index-1
                 tmps=tmps & Arr(i) & ","
           Next
           tmps=tmps & str & ","
           For i=index to Ubound(Arr)
                 tmps=tmps & Arr(i) & ","
           Next
           tmps      =Left(tmps,Len(tmps)-1)
           tStr      =tmps
           tSortStr=""
           tLength      =tLength+1
           tMin      =0
           tMax      =0
           AddItemI=tStr
     End Function

     ''//在索引位置移除元素
     Public Function RemoveItemI(index)
           If index>=Length Or index<=0 Then
                 Exit Function
           End If
         
           Dim Arr,i,tmps
           Redim Arr(Ubound(Split(tStr,",")))
           Arr=Split(tStr,",")
           For i=0 to Ubound(Arr)
                 If i<>index Then tmps=tmps & Arr(i) & ","
           Next
           tmps=tmps & str & ","
           tmps      =Left(tmps,Len(tmps)-1)
           tStr      =tmps
           tSortStr=""
           tLength      =0
           tMin      =0
           tMax      =0
           RemoveItemI=tStr
     End Function

End Class


使用:
比如传入一个数组元素值和顺序是 17,23,55,99,37,比如存入TheArr变量中
Dim SrcStr:SrcStr=Join(TheArr,",")
Dim ca
Set ca=New cArr
ca.srcStr=SrcStr
取最小值
--ca.cMin
最大值
--ca.cMax
取元素个数
--ca.Length
在未尾增加元素
--NewStr=ca.AddItem("99")
从大到小排序
--Response.Write ca.cSort
从小到大
--ca.cSortAsc
移除值为xx的元素
--ca.MoveItem(xxx)
移除索引值为index的元素
--ca.MoveItemI(index)
在索引值为index的元素前插入一个值为str的元素
--ca.AddItem(index,str)
..
排序操作暂时仅支持数元素值为数字型的数组,仅支持一维

相关信息:

生成目录树结构的类
在 VBScript 中使用对象
远程获取类Asp xmlHttp
遭遇ASP类的事件设计
asp类方法初探(广告流量统计系统实践)
硬盘文件搜索代码(ASP类)
asp:debug类
ASP中一个字符串处理类

 

中国ASP技术 ASP.ORG.CN 版权所有 2004-2008