函数代码:
复制代码 代码如下:
<%'*******************************************************
'过滤数组重复函数名称:array_no(cxstr1,cxstr2,cxstr3)
'cxstr1:任意的字符串,自动识别
'cxstr2:cxstr1中分割符号。
'cxstr3:提取结果中的某一位置字串,等于0时返回为全部,大于数组下标时返回最后.
'使用于二维数组
'*******************************************************
function array_no(cxstr1,cxstr2,cxstr3)
if len(cxstr3) > 0 then
if not IsNumeric(cxstr3) then
array_no = "对不起,参数3类型必需为数字"
Exit Function
end if
else
array_no = "对不起,参数3类型必需为数字"
Exit Function
end if
if isarray(cxstr1) then
array_no = "对不起,参数1不能为数组"
Exit Function
end if
if cxstr1 = "" or isempty(cxstr1) then
array_no = "没有数据"
Exit Function
end if
ss = split(cxstr1,cxstr2)
cxs=cxstr2&ss(0)&cxstr2
sss=cxs
for m = 0 to ubound(ss)
cc = cxstr2&ss(m)&cxstr2
if instr(sss,cc)=0 then
sss = sss&ss(m)&cxstr2
end if
next
array_no = right(sss,len(sss)-len(cxstr2))
array_no = left(array_no,len(array_no)-len(cxstr2))
if cxstr3 <> 0 then
cx_sp = split(array_no,cxstr2)
if cxstr3 > ubound(cx_sp) then
array_no = cx_sp(ubound(cx_sp))
else
array_no = cx_sp(cxstr3)
end if
end if
end function%>


下面是测试代码:
复制代码 代码如下:
<%s1 = "abc,aa,bb,cdef,bc,abcdef,hhgg,gggg,cde,edc"
s2 = "1,2,3,11,22,33,12,13,14,11,33,333,14"
s3 = ""
s4 = "sdf,abc,12,2,2,abc"
s5 = split(s4)
response.write "字串为字符时:"&array_no(s1,",",0)&"<br>"
response.write "字串为数字时:"&array_no(s2,",",0)&"<br>"
response.write "字串为空时:"&array_no(s3,",",0)&"<br>"
response.write "字串为混合时:"&array_no(s4,",",0)&"<br>"
response.write "字串为数组时:"&array_no(s5,",",0)&"<br>"
response.write "字串为未知变量时:"&array_no(s33,",",0)&"<br>"
response.write "提取某一位时,没有超过下标时:"&array_no(s1,",",2)&"<br>"
response.write "提取某一位时,超过下标时:"&array_no(s1,",",200)&"<br>"%>

测试结果:
复制代码 代码如下:
字串为字符时:abc,aa,bb,cdef,bc,abcdef,hhgg,gggg,cde,edc
字串为数字时:1,2,3,11,22,33,12,13,14,333
字串为空时:没有数据
字串为混合时:sdf,abc,12,2
字串为数组时:对不起,参数1不能为数组
字串为未知变量时:没有数据
提取某一位时,没有超过下标时:bb
提取某一位时,超过下标时:edc


增强版本: 解决了数组常见错误
复制代码 代码如下:
<%
'*******************************************************
'过滤数组重复函数名称:array_no(cxstr1,cxstr2,cxstr3)
'cxstr1:任意的字符串,自动识别
'cxstr2:cxstr1中分割符号。
'cxstr3:提取结果中的某一位置字串,等于0时返回为全部,大于数组下标时返回最后.
'使用于二维数组
'*******************************************************
function array_no(cxstr1,cxstr2,cxstr3)
if len(cxstr3) > 0 then
if not IsNumeric(cxstr3) then
array_no = "对不起,参数3类型必需为数字"
Exit Function
end if
else
array_no = "对不起,参数3类型必需为数字"
Exit Function
end if
if isarray(cxstr1) then
array_no = "对不起,参数1不能为数组"
Exit Function
end if
if cxstr1 = "" or isempty(cxstr1) then
array_no = "没有数据"
Exit Function
end if
do while instr(cxstr1,",,")>0
cxstr1=replace(cxstr1,",,",",")
loop
if right(cxstr1,1)="," then
cxstr1=left(cxstr1,len(cxstr1)-1)
end if
ss = split(cxstr1,cxstr2)
cxs=cxstr2&ss(0)&cxstr2
sss=cxs
for m = 0 to ubound(ss)
cc = cxstr2&ss(m)&cxstr2
if instr(sss,cc)=0 then
sss = sss&ss(m)&cxstr2
end if
next
array_no = right(sss,len(sss)-len(cxstr2))
array_no = left(array_no,len(array_no)-len(cxstr2))
if cxstr3 <> 0 then
cx_sp = split(array_no,cxstr2)
if cxstr3 > ubound(cx_sp) then
array_no = cx_sp(ubound(cx_sp))
else
array_no = cx_sp(cxstr3)
end if
end if
end function

s1 = "abc,aa,bb,cdef,bc,abcdef,hhgg,gggg,cde,edc,333,,,,,333,7,,,,"
s2 = "1,2,3,11,22,33,12,13,14,11,33,333,14,333,,,,,333,7,,,,"
s3 = ""
s4 = "sdf,abc,12,2,2,abc,333,,,,,333,7,,,,"
s5 = split(s4)
response.write "字串为字符时:"&array_no(s1,",",0)&"<br>"
response.write "字串为数字时:"&array_no(s2,",",0)&"<br>"
response.write "字串为空时:"&array_no(s3,",",0)&"<br>"
response.write "字串为混合时:"&array_no(s4,",",0)&"<br>"
response.write "字串为数组时:"&array_no(s5,",",0)&"<br>"
response.write "字串为未知变量时:"&array_no(s33,",",0)&"<br>"
response.write "提取某一位时,没有超过下标时:"&array_no(s1,",",2)&"<br>"
response.write "提取某一位时,超过下标时:"&array_no(s1,",",200)&"<br>"
%>

主要是增加了判断
复制代码 代码如下:
do while instr(cxstr1,",,")>0
cxstr1=replace(cxstr1,",,",",")
loop
if right(cxstr1,1)="," then
cxstr1=left(cxstr1,len(cxstr1)-1)
end if
标签:
ASP,数组,重复数据

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
桃源资源网 Design By www.nqtax.com

评论“ASP 过滤数组重复数据函数(加强版)”

暂无“ASP 过滤数组重复数据函数(加强版)”评论...

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。