一个较复杂的字符串截取函数

来源:风之相随'S BLOG 时间:2009-11-02 10:45:00 

这个函数是前几年刚流行小偷程序的时候,偶写来用于小偷程序中截取代码的;

可能有些朋友在我以前的代码中看见过了,但没有写用法,现在把调用方法及使用示例写出来。

也许对有些朋友比较有用吧。


'    Function(公有)
'    名称 :    盛飞字符串截取函数
'    作用 :    按指定首尾字符串截取内容(本函数为从左向右截取)
'    参数 :    sContent ---- 被截取的内容
'        sStart ------ 首字符串
'        iStartNo ---- 当首字符串不是唯一时取第几个
'        bIncStart --- 是否包含首字符串(1/True为包含,0/False为不包含)
'        iStartCusor - 首偏移值(指针单位为字符数量,左偏用负值,右偏用正值,不偏为0)
'        sOver ------- 尾字符串
'        iOverNo ----- 当尾字符串不是唯一时取第几个
'        bIncOver ---- 是否包含尾字符串((1/True为包含,0/False为不包含)
'        iOverCusor -- 尾偏移值(指针单位为字符数量,左偏用负值,右偏用正值,不偏为0)

Public Function SenFe_Cut(sContent, sStart, iStartNo, bIncStart, iStartCusor, sOver, iOverNo, bIncOver, iOverCusor)
    If sContent<>"" Then
        Dim iStartLen, iOverLen, iStart, iOver, iStartCount, iOverCount, I
        iStartLen = Len(sStart)    '首字符串长度
        iOverLen  = Len(sOver)    '尾字符串长度
        '首字符串第一次出现的位置
        iStart = InStr(sContent, sStart)
        '尾字符串在首字符串的右边第一次出现的位置
        iOver = InStr(iStart + iStartLen, sContent, sOver)
        If iStart>0 And iOver>0 Then
            If iStartNo < 1 or IsNumeric(iStartNo)=False Then iStartNo = 1
            If iOverNo < 1 or IsNumeric(iOverNo)=False Then iOverNo  = 1
            '取得首字符串出现的次数
            iStartCount = UBound(Split(sContent, sStart))
            If iStartNo>1 And iStartCount>0 Then
                If iStartNo>iStartCount Then iStartNo = iStartCount
                For I = 1 To iStartNo
                    iStart = InStr(iStart, sContent, sStart) + iStartLen
                Next
                iOver = InStr(iStart, sContent, sOver)
                iStart = iStart - iStartLen    '还原默认状态:包含首字符串
            End If
            '取得尾字符串出现的次数
            iOverCount = UBound(Split(Mid(sContent, iStart + iStartLen), sOver))
            If iOverNo>1 And iOverCount>0 Then
                If iOverNo>iOverCount Then iOverNo = iOverCount
                For I=1 To iOverNo
                    iOver = InStr(iOver, sContent, sOver) + iOverLen
                Next
                iOver = iOver - iOverLen    '还原默认状态:不包含尾字符串
            End If
            If CBool(bIncStart)=False Then iStart = iStart + iStartLen    '不包含首字符串
            If CBool(bIncOver)  Then iOver = iOver + iOverLen        '包含尾字符串
            iStart = iStart + iStartCusor    '加上首偏移值
            iOver  = iOver + iOverCusor    '加上尾偏移值
            If iStart<1 Then iStart = 1
            If iOver<=iStart Then iOver = iStart + 1
            '按指定的开始和结束位置截取内容
            SenFe_Cut = Mid(sContent, iStart, iOver - iStart)
        Else
            'SenFe_Cut = sContent
            SenFe_Cut = "没有找到您想要的内容,可能您设定的首尾字符串不存在!"
        End If
    Else
        SenFe_Cut = "没有内容!"
    End If
End Function

使用示例:


另外发一个稍简单的截取函数


'    Function(公有)
'    名称 :    盛飞字符串截取函数
'    作用 :    按指定首尾字符串截取内容(本函数为从左向右截取)
'    参数 :    sContent ---- 被截取的内容
'        sStart ------ 首字符串
'        sOver ------- 尾字符串
'        iType ------- 类型(1:不包含首尾字符串;2:包含首尾字符串;3:包含首、不包含尾;4:不包含首、包含尾)

Function SenFe_Cut(sContent, sStart, sOver, iType)
    Dim iStart, iOver
    iStart = InStr(sContent,sStart)
    iOver  = InStr(iStart+Len(sStar),sContent,sOver)
    If iStart>0 And iOver>0 Then
        Select Case iType
            Case 1 iStart = iStart+Len(sStart)
            Case 2 iOver  = iOver+Len(sOver)
            Case 4 iStart = iStart+Len(sStart):iOver = iOver+Len(sOver)
        End Select
        SenFe_Cut = Mid(sContent,iStart,iOver-iStart)
    Else
        SenFe_Cut = "没有找到您想要的内容,可能您设定的首尾字符串不存在!"
    End If
End Function另外也可以用正则截取,代码更简单,就不用贴了。

标签:字符串,函数,截取
0
投稿

猜你喜欢

  • 自适应浏览器位置的div效果

    2008-05-29 13:15:00
  • 在IE8中继续使用滤镜及IE8的一些CSS扩展属性

    2009-02-21 11:18:00
  • 怎么样在网页上读取远程xml的数据

    2008-10-10 17:43:00
  • 关于ASP eof与bof 区别分析

    2011-03-11 11:14:00
  • 正视WEB标准,一本全面的标准参考书

    2009-05-30 16:36:00
  • 给页面加上Loading效果最简单实用的办法

    2008-11-20 11:58:00
  • 如何使数据库的ID字段自动加1?

    2010-06-03 10:47:00
  • asp我对后台安全的一些做法

    2011-09-01 19:22:09
  • ASP程序中使用断开的数据记录集的代码

    2012-12-04 20:20:28
  • 获取mssql的xml返回结构的方法

    2007-08-23 12:52:00
  • 分析Silverlight Button控件布局

    2009-02-17 13:13:00
  • 数据仓库基本报表制作过程中的SQL写法

    2008-11-25 12:17:00
  • JS判断是否为数字、JS判断是否为整数、JS判断是否为浮点数

    2008-11-19 16:42:00
  • SQL Server 2005中插入XML数据方法

    2008-05-26 11:56:00
  • 快速让MySQL数据库服务器支持远程连接

    2010-01-16 13:06:00
  • 恢复master..xp_logattach(log explorer)

    2010-07-01 19:19:00
  • Oracle时间日期操作方法小结第1/2页

    2010-11-29 19:40:00
  • 利用xslt对xml进行缩进格式化处理

    2008-09-04 10:34:00
  • 为导入文件加上时间戳标记的两种方法

    2009-01-07 14:14:00
  • sql server中批量插入与更新两种解决方案分享(存储过程)

    2012-05-22 18:29:59
  • asp之家 网络编程 m.aspxhome.com