发一个较复杂的字符串截取函数
来源:蓝色理想 发布时间:2009-12-08 16:23: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
使用示例:
猜你喜欢
- 在MySQL中,对于索引的使用并是一直都采用正确的决定。简单表的示例:CREATE TABLE `r2` (ID` int(11) DEFA
- 这个帖子在51js看到的,觉得很有学习意义,看看高手们是怎么做的吧!提问者:infinte急求:正则或算法,JS VBS均可。要求:[1]支
- zy3287 问:<script src="js.js?id=999" type="text/javas
- 如下图所示:单击Edit Code打开Code信息如下:经查Data at the root level is invalid是XML文件的
- 注:本文所说的视觉设计师专指网页视觉设计师。网页设计师与平面设计师都归类为设计师,其实这两个职业是跨行业的,虽然有很多设计师一直在跨行业工作
- asp如何获知页面上的图象的实际尺寸大小?见下面的两个asp文件:<!--#include virtual="/i
- 绘制一个线框图是你在制作一个网站前必须要经历的过程。线框图能够帮助你合理的组织并简化你内容和元素,是网站内容布局的基本视觉表现方式,是网站开
- MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司,在2008年1月16号被Sun公司收购。MySQL被广泛地应用在I
- 新浪天气预报代码,需要的朋友可以复制下面的代码到要显示的页面,新浪代码 :<IFRAME WIDTH='260
- 网上有很多提供在线按钮制作、文字标题制作、Logo制作服务的网站,它们可以非常方便了让大家轻松的获得效果出色的各类图标型的图片,下面就快来看
- 如果你使用过大部分,那么你的ASP功力应该是非常高的了ADO对象(太常用了):ConnectionCommandRecordSetRecor
- 由于ajax在跨域的访问上有问题,目前最好的方法是做代理.写了个代理程序和心得为了做ajax的代理,研究了下服务器端的xmlhttp并和客户
- 代码如下:declare @cmd nvarchar(4000) set @cmd = N'exec [?].sys.sp_chan
- 英语原文地址:点此浏览新年开始了,来点猛料,放上15个漂亮的网页排版的demo,来欣赏一下。去年我也专门找了15个同类网站,比较受用户欢迎,
- 前几天,酋长同学在日志里提到了关于Google宽松的管理制度,一个产品任务下来是没有时间限制的,Google深信在有时间限制下的产品肯定是不
- AddHeaderAddHeader 方法用指定的值添加 HTML 标题。该方法常常向响应添加新的 HTTP 标题。它并不替代现有的同名标题
- 平时我们在使用MySQL数据库的时候经常会因为操作失误造成数据丢失,MySQL数据库备份可以帮助我们避免由于各种原因造成的数据丢失或着数据库
- 只添加了一些自己想到的常用的功能,欢迎大家补充添加自己的好的思路. 通用的正则和方法可以写在RegExpObj中,
- SWFObject的使用是非常简单的,只需要包含 swfobject.js这个js文件,然后在DOM中插入一些简单的JS代码,就能嵌入Fla
- 很有创意的鼠标指针风筝,看起来非常有意思。在网络上看到的,一下也想不起来是那里的了,所以特别说一下图片是来自网络的,版权归作者所有。