函数|字符串|小偷程序
asp小偷程序中的字符串截取函数
以下是函数代码: ’******************************************************************************** ’ 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 |
以下是示例代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>阿里西西字符串截取函数(按指定首尾字符串截取内容)</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta http-equiv="Content-Language" content="zh-CN" />
<meta content="all" name="robots" />
<meta name="author" content="阿里西西, alixixi" />
<meta name="Copyright" content="" />
<meta name="description" content="" />
<meta content="" name="keywords" />
<style type="text/css"><!--
* {
font-size: 12px;
}
#test {
border-top: 1px #000 solid;
border-left: 1px #000 solid;
}
#test td,#test th {
border-right: 1px #000 solid;
border-bottom: 1px #000 solid;
line-height: 200%;
}
--></style>
<script language="vbscript"><!--
’********************************************************************************
’ 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
--></script>
<script language="javascript"><!--
//return HTML object by object id
function $(id) {
var obj = document.getElementById(id);
return obj ? obj : undefined;
}
function Test() {
var content = $("content").value;
var sStart = $("sStart").value;
var iStartNo = $("iStartNo").value;
var bIncStart = $("bIncStart").checked;
var iStartCusor = $("iStartCusor").value;
var sOver = $("sOver").value;
var iOverNo = $("iOverNo").value;
var bIncOver = $("bIncOver").checked;
var iOverCusor = $("iOverCusor").value;
if(content=="") {
alert("请输入待截取的内容!");
$("content").focus();
return false;
}
if(sStart=="") {
alert("请输入首字符串!");
$("sStart").focus();
return false;
}
if(sOver=="") {
alert("请输入尾字符串!");
$("sOver").focus();
return false;
}
if(iStartNo=="" || isNaN(iStartNo)) iStartNo=1;
if(iOverNo=="" || isNaN(iOverNo)) iOverNo=1;
if(iStartCusor=="" || isNaN(iStartCusor)) iStartCusor = 0;
if(iOverCusor=="" || isNaN(iOverCusor)) iOverCusor = 0;
$("results").value = SenFe_Cut(content, sStart, parseInt(iStartNo), bIncStart, parseInt(iStartCusor), sOver, parseInt(iOverNo), bIncOver, parseInt(iOverCusor));
$("example").value = "sContent = SenFe_Cut(\"内容\", \"首字符串\", "+iStartNo+", "+bIncStart+", "+iStartCusor+", \"尾字符串\", "+iOverNo+", "+bIncOver+", "+iOverCusor+")";
}
--></script>
</head>
<body>
<table id="test" cellspacing="0" cellpadding="0" align="center">
<tr><th>盛 飞 字 符 串 截 取 函 数</th></tr>
<tr><td>待截取的内容:</td></tr>
<tr><td><textarea name="content" id="content" rows="10" cols="80"></textarea></td></tr>
<tr><td>首字符串:</td></tr>
<tr><td><textarea name="sStart" id="sStart" rows="2" cols="80"></textarea></td></tr>
<tr><td>取第<input type="text" name="iStartNo" id="iStartNo" value="1" size="2" />个 <input type="checkbox" name="bIncStart" id="bIncStart" value="1" />包含首字符串? 偏移值:<input type="text" name="iStartCusor" id="iStartCusor" value="0" size="2" /></td></tr>
<tr><td>尾字符串:</td></tr>
<tr><td><textarea name="sOver" id="sOver" rows="2" cols="80"></textarea></td></tr>
<tr><td>取第<input type="text" name="iOverNo" id="iOverNo" value="1" size="2" />个 <input type="checkbox" name="bIncOver" id="bIncOver" value="1" />包含首字符串? 偏移值:<input type="text" name="iOverCusor" id="iOverCusor" value="0" size="2" /></td></tr>
<tr><td><input type="button" name="submit" value=" 测 试 " /></td></tr>
<tr><td>返回结果:</td></tr>
<tr><td><textarea name="results" id="results" rows="10" cols="80"></textarea></td></tr>
<tr><td>调用示例:</td></tr>
<tr><td><textarea name="example" id="example" rows="2" cols="80"></textarea></td></tr>
</table>
</body>
</html>