网络编程
位置:首页>> 网络编程>> Asp编程>> asp两组字符串数据比较合并相同数据(2)

asp两组字符串数据比较合并相同数据(2)

 来源:asp之家 发布时间:2011-04-14 11:08:00 

标签:asp,字符串,数据比较,合并


如何解决不再运算比较已经被比较运算过的元素

我们必须对已经比较运算过的元素进行标记,比如a3数组中(a3="sp2=20;sp1=34;sp3=2;sp2=3;sp1=4;")取出sp2=20后会比较运算到后一个sp2=3,此时比较运算后将sp2=3的数组元素编号进行标记,下次循环比较时该元素不计在内。

s_array = split(a3,";") 
for i = 0 to ubound(s_array) 
for j=i+1 to ubound(s_array) 
if getSPName(s_array(i)) = getSPName(s_array(j)) then 
Nums = Nums + Cint(getSPNum(s_array(j))) 
end if 

redim Preserve ID(q) 
ID(q) = j 
q = q + 1 
next 

redim Preserve result(p) 
result(p) = getSPName(s_array(i)) & "=" & Nums 
p=p+1 
next 

其中定义ID(q)=j就是将当前比较相同的该元素标记,并赋值于动态数组id(q),q默认定义为0,再次循环q=q+1

那么有力该标记,我们就可以有选择性的选择比较累加了。

定义函数

function IsInID(j) 
dim x 
IsInID = false 
for each x in ID 
if x = j then 
IsInID = true 
exit function 
End if 
Next 
end function 

主要函数为

function mainhb(s) 
s_array = split(s,";") 
for i = 0 to ubound(s_array) 
if not IsInID(i) then 
Nums = getSPNum(s_array(i)) 
for j=i+1 to ubound(s_array) 
if getSPName(s_array(i)) = getSPName(s_array(j)) then 
Nums = Nums + Cint(getSPNum(s_array(j))) 
redim Preserve ID(q) 
ID(q) = j 
q = q + 1 
end if 
next 

redim Preserve result(p) 
result(p) = getSPName(s_array(i)) & "=" & Nums 
p = p + 1 
end if 
next 

for each x in result 
mainhb=mainhb&x&";" 
next 
end function 

整体函数为

<% 
dim result() 
dim ID() 
dim p , q , Nums 

p=0 
q= 0 
Nums = 0 

redim Preserve ID(q) 
ID(q) = "" 

s = "sp4=33;sp2=20;sp1=34;sp3=2;sp2=3;sp4=4;" 
s = left(s,len(s)-1) 
response.write mainhb(s) 

function mainhb(s) 
s_array = split(s,";") 
for i = 0 to ubound(s_array) 
if not IsInID(i) then 
Nums = getSPNum(s_array(i)) 
for j=i+1 to ubound(s_array) 
if getSPName(s_array(i)) = getSPName(s_array(j)) then 
Nums = Nums + Cint(getSPNum(s_array(j))) 
redim Preserve ID(q) 
ID(q) = j 
q = q + 1 
end if 
next 

redim Preserve result(p) 
result(p) = getSPName(s_array(i)) & "=" & Nums 
p = p + 1 
end if 
'Nums = 0 
next 

for each x in result 
mainhb=mainhb&x&";" 
next 
end function 

Function getSPName(sp) 
getSPName = split(sp,"=")(0) 
End Function 


Function getSPNum(sp) 
getSPNum = split(sp,"=")(1) 
end function 

function IsInID(j) 
dim x 
IsInID = false 
for each x in ID 
if x = j then 
IsInID = true 
exit function 
End if 
Next 
end function 
%> 

 

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com