麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > ASP > 正文

asp兩組字符串?dāng)?shù)據(jù)比較合并相同數(shù)據(jù)

2024-05-04 11:09:16
字體:
供稿:網(wǎng)友
兩組字符串?dāng)?shù)據(jù),需要比較其中相同的數(shù)據(jù),并將其值相加并組成一個(gè)新的字符串?dāng)?shù)據(jù)
 
 
 
a1="sp2=20;sp1=34;" 
a2="sp3=2;sp2=3;sp1=4;" 
兩組字符串?dāng)?shù)據(jù),將字符串中相同的數(shù)據(jù)值相加后得到新的一組數(shù)據(jù) 
即“sp3=2;sp2=23;sp1=38” 

(p.s 一個(gè)簡單的應(yīng)用:商品二原有數(shù)量20件,商品一原有數(shù)量34件,新進(jìn)貨或者新出售了商品二3件,商品一4件等類型模擬情況下計(jì)算出進(jìn)貨量,銷售量和庫存量,小型的進(jìn)銷存系統(tǒng)可采用這樣的方法) 

那么如何實(shí)現(xiàn)兩組字符串?dāng)?shù)據(jù)比較合并相同數(shù)據(jù)? 

第一,將兩組字符串?dāng)?shù)據(jù)進(jìn)行連接組合 

a3=a1&a2 
那么a3="sp2=20;sp1=34;sp3=2;sp2=3;sp1=4;" 

第二,將a3中相同的數(shù)據(jù)進(jìn)行值的相加 

這里主要解決的是如何尋找到相同的數(shù)據(jù) 

首先因?yàn)楝F(xiàn)在a3就是由 sp2、sp1、sp3、sp2和sp1組成,需要把相同的sp2和sp1單獨(dú)找出來再進(jìn)行值得相加。 

通過split函數(shù)分割“;”為分隔符獲得每塊數(shù)據(jù)和值。 
即 s_array = split(a3,";")通過for i = 0 to ubound(s_array)循環(huán)我們可以獲得單獨(dú)的各項(xiàng)數(shù)據(jù)及值 

其中每項(xiàng)的格式是類似“sp2=20”,要將sp2提取出來才能和同組中的數(shù)據(jù)進(jìn)行比較,所以還需要獨(dú)立函數(shù)進(jìn)行提取 

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

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

分別獲得“=”前的數(shù)據(jù)名稱和“=”后的數(shù)據(jù)值。 

其次每塊數(shù)據(jù)都分解下來了,就是如何尋找到相同的數(shù)據(jù)名稱。 
我們假設(shè)這樣的流程,首先將a3數(shù)組中的第一元素提取,通過和除第一元素之前以為的數(shù)據(jù)進(jìn)行比較,如果有相同則進(jìn)行相加。 


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 
next 
next 



我們獲得了最終的值可以隨時(shí)將值賦到新的動(dòng)態(tài)數(shù)組中,組合成最終的“組合數(shù)據(jù)”數(shù)組 
redim Preserve result(p) 
result(p) = getSPName(s_array(i)) & "=" & Nums 
即 


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 
next 

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




這個(gè)里面勢必會(huì)遇到這樣的一個(gè)情況:當(dāng)a3數(shù)組中的其后的某一元素總會(huì)與之前比較的相同的元素進(jìn)行了運(yùn)算,所以該元素就不能計(jì)入 for i = 0 to ubound(s_array)內(nèi)的result(p) = getSPName(s_array(i)) & "=" & Nums動(dòng)態(tài)數(shù)組中去。 

如何解決不再運(yùn)算比較已經(jīng)被比較運(yùn)算過的元素 

我們必須對已經(jīng)比較運(yùn)算過的元素進(jìn)行標(biāo)記,比如a3數(shù)組中(a3="sp2=20;sp1=34;sp3=2;sp2=3;sp1=4;")取出sp2=20后會(huì)比較運(yùn)算到后一個(gè)sp2=3,此時(shí)比較運(yùn)算后將sp2=3的數(shù)組元素編號進(jìn)行標(biāo)記,下次循環(huán)比較時(shí)該元素不計(jì)在內(nèi)。 


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就是將當(dāng)前比較相同的該元素標(biāo)記,并賦值于動(dòng)態(tài)數(shù)組id(q),q默認(rèn)定義為0,再次循環(huán)q=q+1 
那么有力該標(biāo)記,我們就可以有選擇性的選擇比較累加了。 
定義函數(shù) 


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 




主要函數(shù)為 


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 




整體函數(shù)為 


<% 
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 
%> 
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 日韩在线播放第一页 | 国产精品久久久久久久不卡 | 久久久久久久久久亚洲 | 一级一片免费看 | 国产精品剧情一区二区三区 | 主人在调教室性调教女仆游戏 | 激情视频免费看 | 成人在线观看小视频 | 久久爽久久爽久久av东京爽 | 爱逼av| 天天透天天狠天天爱综合97 | 粉嫩一区| 爽爽淫人网| 国产精品久久久久久久久久iiiii | 九九热精品在线 | 粉嫩粉嫩一区二区三区在线播放 | 国产精品99久久久久久大便 | 特一级黄色毛片 | 性欧美视频在线观看 | 国产精品久久久网站 | 精品一区二区三区在线观看国产 | 最近日本电影hd免费观看 | 一级毛片在线免费观看视频 | 国产成人自拍视频在线 | 在线成人影视 | av免费在线网 | 久久91久久久久麻豆精品 | 成人免费一区二区三区视频网站 | 欧美一区黄色 | 久久久久久久久久综合 | 国产成人在线视频 | 久草在线视频福利 | 欧美激情精品久久久久久黑人 | 伊人yinren22综合网色 | 视频一区免费观看 | 黄色特级一级片 | 99麻豆久久久国产精品免费 | 成人免费观看av | 中文字幕一二三区芒果 | 草莓视频久久 | 欧美巨根 |