一个较复杂的字符串截取函数
来源:风之相随'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另外也可以用正则截取,代码更简单,就不用贴了。


猜你喜欢
- .tkintertkinter是Python下面向tk的图形界面接口库,可以方便地进行图形界面设计和交互操作编程。tkinter的优点是简单
- 今天我们说一下Redis中最后一个数据类型 “有序集合类型”,回首之前学过的几个数据结构,不知道你会不会由衷感叹,开源的世界真好,写这些代码
- 前段时间为准备百度面试恶补的东西,虽然最后还是被刷了,还是把那几天的“战利品”放点上来,算法一直是自己比较薄弱的地方,以后还要更加努力啊。下
- 任务1、记录用户登录日志import timedef show_info():? ? print('输入提示数字,执行相应操作:0退
- Jupyter 是数据分析领域非常有名的开发环境,使用 Jupyter 写数据分析相关的代码会大大节约开发时间。设想这样一个场景:别的部门的
- 这篇文章主要介绍了Python三元运算与lambda表达式实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价
- 最近项目使用c++操作Python脚本,选用boost.python库。在window下编译安装很顺利,但是在Linux下一直编译不通过,总
- 数据库中对数据的操作是一大重要技能,其中,数据的恢复和还原也是常做的事。不知你是否在数据库恢复时遇到诸如“设备激活错误,请使用with mo
- 原因是dict.keys()的返回结果不再是一个list了Python3的keys(), values(), items()返回的都是迭代器
- list count统计个数实现在python数组中统计某个数字出现的次数。。。。。count_num = 3lst = [1,2,3,4,
- 如:获得 2015-03-01 日的前7天的日期 : select date_sub('2015-03-01',interv
- 1.综述又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以
- Python实现AES算法密码学课程老师留的作业,我觉得用python实现更简单,就用python写了一个加解密的程序。程序分成三个部分,一
- exam = { 'math': '95', 'eng': '96',
- 我们在使用ASP 内置的ADO组件进行数据库编程时,通常是在脚本的开头打开一个连接,并在脚本的最后关闭它,但是就较大脚本而言,在多数情况下连
- 一个等号是赋值操作,==先转换类型再比较,===先判断类型,如果不是同一类型直接为false。=== 判断规则如果类型不同,就[不相等]&n
- 学习前言在前一段时间已经完成了卷积神经网络的复习,现在要对循环神经网络的结构进行更深层次的明确。RNN简介RNN 是当前发展非常火热的神经网
- 今天遇到一个需要用javascript将url中的某些参数替换的需求,想起了不久前从网上淘到了一个parseUrl函数,正好可以借此实现,代
- 有两种类型的回调函数:blocking callbacks (also known as synchronous callbacks or
- 最近在学习OpenCV,本文主要介绍了OpenCV 绘制同心圆的示例代码,分享给大家,具体如下:功能函数// 绘制同心圆void DrawC