源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-07-20 23:10 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:asp两组字符串数据比较合并相同数据
a1="sp2=20;sp1=34;" a2="sp3=2;sp2=3;sp1=4;" 两组字符串数据,将字符串中相同的数据值相加后得到新的一组数据 即“sp3=2;sp2=23;sp1=38” (p.s 一个简单的应用:商品二原有数量20件,商品一原有数量34件,新进货或者新出售了商品二3件,商品一4件等类型模拟情况下计算出进货量,销售量和库存量,小型的进销存系统可采用这样的方法) 那么如何实现两组字符串数据比较合并相同数据? 第一,将两组字符串数据进行连接组合 a3=a1&a2 那么a3="sp2=20;sp1=34;sp3=2;sp2=3;sp1=4;" 第二,将a3中相同的数据进行值的相加 这里主要解决的是如何寻找到相同的数据 首先因为现在a3就是由 sp2、sp1、sp3、sp2和sp1组成,需要把相同的sp2和sp1单独找出来再进行值得相加。 通过split函数分割“;”为分隔符获得每块数据和值。 即 s_array = split(a3,";")通过for i = 0 to ubound(s_array)循环我们可以获得单独的各项数据及值 其中每项的格式是类似“sp2=20”,要将sp2提取出来才能和同组中的数据进行比较,所以还需要独立函数进行提取 Function getSPName(sp)     getSPName = split(sp,"=")(0) End Function Function getSPNum(sp)     getSPNum = split(sp,"=")(1) end function 分别获得“=”前的数据名称和“=”后的数据值。 其次每块数据都分解下来了,就是如何寻找到相同的数据名称。 我们假设这样的流程,首先将a3数组中的第一元素提取,通过和除第一元素之前以为的数据进行比较,如果有相同则进行相加。 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   我们获得了最终的值可以随时将值赋到新的动态数组中,组合成最终的“组合数据”数组 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   这个里面势必会遇到这样的一个情况:当a3数组中的其后的某一元素总会与之前比较的相同的元素进行了运算,所以该元素就不能计入 for i = 0 to ubound(s_array)内的result(p) = getSPName(s_array(i)) & "=" & Nums动态数组中去。 如何解决不再运算比较已经被比较运算过的元素 我们必须对已经比较运算过的元素进行标记,比如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 %> 
[Ctrl+A 全选 注:[url=http://www.1sucai.cn/article/23421.htm]如需引入外部Js需刷新才能执行[/url]]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部