CMS2.0开发进行时之二--StringBuilder类
作者:大石头
来源:
发布时间:2007-1-16 22:16:36
共有212位读者阅读过此文
用过Net开发的人都知道,大量字符串合并,一般使用StringBuilder,性能可大大提高。 在CMS2.0的开发过程中,特别是模版处理的时候,几乎全部都是字符串串联操作,为了提高性能,以及优化程序结构,特编写了一个ASP的StringBuilder类,源码如下:
以下是代码片段: <% '******************************************************************* ' 程序名:字符串Builder类 ' 工程名:通用类 ' 文件名:Class_StringBuilder.asp ' 版 本:V1.0 ' 作 者:大石头(99363590) ' 组 织:新生命(NewLife)(QQ群:8088565) ' 更新日期:2006-12-26 0:40:52 '******************************************************************* %> <% Class NewLife_Class_StringBuilder Public Ver, ClassName '类版本,名称 Public Name '视图名字,用来唯一定位网格 Public Arr() '字符串数组 Public Delimiter '分隔符 Private m_MaxLength '最大长度 Private m_Count '实际数组元素个数 '类初始化 Private Sub Class_Initialize() Ver = "1.0" ClassName = "NewLife_Class_StringBuilder" m_MaxLength = 0 m_Count = 0 Delimiter = "" End Sub '重新分配大小 Public Sub ReSize() ReDim Preserve Arr(m_MaxLength-1) End Sub Public Property Get MaxLength() MaxLength = m_MaxLength End Property Public Property Let MaxLength(vMaxLength) m_MaxLength = vMaxLength ReSize() '设定最大长度后,重新分配大小 End Property Public Property Get Count() Count = m_Count End Property '插入文本 Public Function Append(str) If TypeName(str)="Variant()" Then '插入的可能是一个字符串数组 If Length + UBound(str) - LBound(str) + 1 > MaxLength Then '空间不够,则一次分配足够,且多分配100个单元 MaxLength = MaxLength * 2 + UBound(str) - LBound(str) + 1 End If Dim i For i=LBound(str) To UBound(str) Arr(m_Count) = str(i) m_Count = m_Count + 1 Next ElseIf TypeName(str)=ClassName Then '插入的可能也是一个StringBuilder对象 If m_Count + str.Count > MaxLength Then '空间不够,则一次分配足够,且多分配100个单元 MaxLength = MaxLength * 2 + str.Count End If Dim j For j=1 To str.Count Arr(m_Count) = str.Arr(i) m_Count = m_Count + 1 Next Else If m_Count + 1 > MaxLength Then '空间不够,则一次分配足够,且多分配100个单元 If MaxLength=0 Then '防止有些人网址设定MaxLength,默认指向100 MaxLength = 500 Else MaxLength = MaxLength * 2 End If End If Arr(m_Count) = str m_Count = m_Count + 1 End If End Function '导出 Public Function ToString() '压缩,把数组设置为实际大小,以防下面Join的时候产生空格 If MaxLength<>Count Then MaxLength = Count ToString = Join(Arr, Delimiter) End Function End Class %> |
转载必须指明出自本站!!
最后,CMS2.0的开发,同时也是Gen3.0的开发,需要更多人的支持……
|
|
| 评论 |
| 大石头 |
2007-5-29 15:48:24 |
| 试试Ajax正常没有! |
|
|
|
|
|