(原创)类似于.Net里的StringBuilder的类

写过ASP.Net 程序的都知道ASP.Net提供有一个StringBuilder类,此类有点类似于JAVA的String流,就是同ASP中的字符串变量差不多的了.但如果对于数据多的话则此类的字符串处理比动态字符串变量的性能要好得多!具体原因可以看此文[改进 ASP 应用程序中的字符串处理性能].并且我写的"模版类"也会有时对大量的数据进行连接使用.所以就写了这个类似StringBuilder的类.但我测试了一下使用该类和不使用该类的运行时间.发现好像没有什么区别(可能我测试时的数据量还不多,感觉不出来罢了).各位有兴趣的也可以使用一下或者修改改进一下此类.如果你修改改进此类后麻烦你提供一份程序给我.谢谢:)

<%
'/*====================================
'/*作者:死在水中的鱼
'/*日期:2004年7月11日
'/*Blog:http://blog.lznews.cn/blog.asp?name=哇哇鱼
'/*版本:1.0
'/*类的使用方法:
'/*    Dim objString
'/*    Set objString=New StringBuilder
'/*    objString.InitiSize=1024
'/*    objString.IncreaseSize=100
'/*    objString.Append "增加字符串"
'/*    objString.Insert "插入字符串",20
'/*    Response.Write objString.ToString
'/*    objString.Clear
'/*    objString.Append "第二次增加字符串"
'/*    Response.Write objString.ToString
'/*    Set objString=nothing
'/* 转载时或修改时,请尊重作者的知识产权,保留此说明!
'/*======================================
Class StringBuilder
Public InitiSize       '被始化的大小空间
Public IncreaseSize    '每次增加的大小空间
Private S_SpaceString  '自身类使用的缓存变量
Private S_Position     '用来标记当前添加字符串的位置
Private S_MaxSize      '用来标记当前的缓存变量的大小

Private Sub Class_Initialize
 InitiSize=5120     '默认的大小空间是5K的大小
 IncreaseSize=512     '默认的每次增加的大小空间是0.5K
 S_SpaceString=""
End Sub

'/*====================================
'/*函数名:InitializeSpace()
'/*函数作用:被始化S_SpaceString的大小空间
'/*入口参数:
'/*返回值:
'/*====================================
Private Sub InitializeSpace()
 '少于100Byte的话按默认值
 If InitiSize<100 then
   InitiSize=5120
 End if
 '增加量少于10Byte的话按默认值
 If IncreaseSize<10 Then
    IncreaseSize=512
 End If
 If S_SpaceString="" Then
    S_SpaceString=Space(InitiSize)
 S_Position=0
 S_MaxSize=InitiSize
 End If
End Sub

'/*====================================
'/*函数名:InCreaseSpace(iSize)
'/*函数作用:增加字符串类的缓存空间
'/*入口参数:iSize=要添加的字符串大小
'/*返回值:
'/*说明:iSize此处按ByRef是按地址传入,所以不会再另外增加新的字符串
'/*====================================
Private Sub InCreaseSpace(ByRef iSize)
 If iSize<1 Then Exit Sub
 S_SpaceString=S_SpaceString&Space(iSize)
 S_MaxSize=S_MaxSize+iSize
End Sub

'/*====================================
'/*函数名:Append(sString)
'/*函数作用:添加字符串在类的缓存空间
'/*入口参数:sString=要添加的字符串
'/*返回值:
'/*说明:sString此处按ByRef是按地址传入,所以不会再另外增加新的字符串
'/*====================================
Public Sub Append(ByRef sString)
 Dim iLen,pSize
 Call InitializeSpace       '如果缓存变量为空则被始化空间大小
 iLen=Len(sString)
 pSize=iLen+S_Position
 If pSize>S_MaxSize Then 
 '如果要添加的字符串比当前缓存变量的空间大的话,增加空间
   If (pSize-S_MaxSize)<IncreaseSize Then
      '要增加的空间小于每次增加的大小值时增加空间,否则的话不用增加,但要修改S_MaxSize的值
      Call InCreaseSpace(IncreaseSize)
   Else
      S_MaxSize=pSize
   End If
 End If
 S_SpaceString=Left(S_SpaceString,S_Position)&sString&Mid(S_SpaceString,pSize+1)
 S_Position=pSize
End Sub

'/*====================================
'/*函数名:Insert(sString,iPos)
'/*函数作用:插入字符串在类的缓存空间
'/*入口参数:sString=要插入的字符串   iPos=要插入的位置
'/*返回值:
'/*说明:sString此处按ByRef是按地址传入,所以不会再另外增加新的字符串
'/*====================================
Public Sub Insert(ByRef sString,ByVal iPos)
 Dim iLen
 If iPos>S_MaxSize then
  iPos=S_MaxSize
 End if
 iLen=Len(sString)
 S_SpaceString=Left(S_SpaceString,iPos)&sString&Mid(S_SpaceString,iPos+1)
 S_MaxSize=S_MaxSize+iLen
 iPos=iPos+iLen
 If iPos>S_Position then
 '如果插入后的字符串的位置大于类的缓存"指针"位置则移动"指针"
  S_Position=iPos
 End If
End Sub

'/*====================================
'/*函数名:ToString()
'/*函数作用:返回字符串
'/*入口参数:
'/*返回值:经过处理后的sString值
'/*说明:
'/*====================================
Public Function ToString()
 ToString=Left(S_SpaceString,S_Position)
End Function

'/*====================================
'/*函数名:Clear()
'/*函数作用:清空以前的数据,重新被始化
'/*入口参数:
'/*返回值:
'/*说明:
'/*====================================
Public Sub Clear()
 S_SpaceString=Space(InitiSize)
 S_Position=0
 S_MaxSize=InitiSize
End Sub

Private Sub Class_Terminate
 S_SpaceString=""
End Sub
End Class
%>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值