两个以前写的ASP字符串截取函数,做小偷程序时经常用到。
首发地址:http://bbs.blueidea.com/viewthread.php?tid=2853887
简单版:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | '******************************************************************************** '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 |
高级版:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | '******************************************************************************** '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 '还原默认状态:不包含尾字符串 Else sValue_ = "没有找到您想要的内容,您设定的尾字符串不存在!" Exit Sub 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 |
转载请注明出处