作品 订阅所有【作品】的日志

字符串截取函数

ASP/Visual Basic代码
  1.   
  2. '********************************************************************************   
  3. '   Function(公有)   
  4. '   名称 :    字符串截取函数(原盛飞)   
  5. '   作用 :    按指定首尾字符串截取内容(本函数为从左向右截取)   
  6. '   修改 :    卡斯   
  7. '   参数 :    sContent ---- 被截取的内容   
  8. '       sStart ------ 首字符串   
  9. '       iStartNo ---- 当首字符串不是唯一时取第几个   
  10. '       bIncStart --- 是否包含首字符串(1/True为包含,0/False为不包含)   
  11. '       iStartCusor - 首偏移值(指针单位为字符数量,左偏用负值,右偏用正值,不偏为0)   
  12. '       sOver ------- 尾字符串   
  13. '       iOverNo ----- 当尾字符串不是唯一时取第几个   
  14. '       bIncOver ---- 是否包含尾字符串((1/True为包含,0/False为不包含)   
  15. '       iOverCusor -- 尾偏移值(指针单位为字符数量,左偏用负值,右偏用正值,不偏为0)   
  16. '********************************************************************************   
  17. Public Function SenFe_Cut(sContent, sStart, iStartNo, bIncStart, iStartCusor, sOver, iOverNo, bIncOver, iOverCusor)   
  18.     If sContent<>"" Then  
  19.         Dim iStartLen, iOverLen, iStart, iOver, iStartCount, iOverCount, I   
  20.         iStartLen = Len(sStart) '首字符串长度   
  21.         iOverLen  = Len(sOver)  '尾字符串长度   
  22.         '首字符串第一次出现的位置   
  23.         iStart = InStr(sContent, sStart)   
  24.         '尾字符串在首字符串的右边第一次出现的位置   
  25.         iOver = InStr(iStart + iStartLen, sContent, sOver)   
  26.         If iStart>0 And iOver>0 Then  
  27.             If iStartNo < 1 or IsNumeric(iStartNo)=False Then iStartNo = 1   
  28.             If iOverNo < 1 or IsNumeric(iOverNo)=False Then iOverNo  = 1   
  29.             '取得首字符串出现的次数   
  30.             iStartCount = UBound(Split(sContent, sStart))   
  31.             If iStartNo>1 And iStartCount>0 Then  
  32.                 If iStartNo>iStartCount Then iStartNo = iStartCount   
  33.                 For I = 1 To iStartNo   
  34.                     iStart = InStr(iStart, sContent, sStart) + iStartLen   
  35.                 Next  
  36.                 iOver = InStr(iStart, sContent, sOver)   
  37.                 iStart = iStart - iStartLen '还原默认状态:包含首字符串   
  38.             End If  
  39.             '取得尾字符串出现的次数   
  40.             iOverCount = UBound(Split(Mid(sContent, iStart + iStartLen), sOver))   
  41.             If iOverNo>1 And iOverCount>0 Then  
  42.                 If iOverNo>iOverCount Then iOverNo = iOverCount   
  43.                 For I=1 To iOverNo   
  44.                     iOver = InStr(iOver, sContent, sOver) + iOverLen   
  45.                 Next  
  46.                 iOver = iOver - iOverLen    '还原默认状态:不包含尾字符串   
  47.             End If  
  48.             If CBool(bIncStart)=False Then iStart = iStart + iStartLen  '不包含首字符串   
  49.             If CBool(bIncOver)  Then iOver = iOver + iOverLen       '包含尾字符串   
  50.             iStart = iStart + iStartCusor   '加上首偏移值   
  51.             iOver  = iOver + iOverCusor '加上尾偏移值   
  52.             If iStart<1 Then iStart = 1   
  53.             If iOver<=iStart Then iOver = iStart + 1   
  54.             '按指定的开始和结束位置截取内容   
  55.             SenFe_Cut = Mid(sContent, iStart, iOver - iStart)   
  56.         Else  
  57.             'SenFe_Cut = sContent   
  58.             SenFe_Cut = "没有找到您想要的内容,可能您设定的首尾字符串不存在!"  
  59.         End If  
  60.     Else  
  61.         SenFe_Cut = "没有内容!"  
  62.     End If  
  63. End Function  

 

 

点击查看演示



文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.