• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP > asp两组字符串数据比较合并相同数据

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

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了字符串数据,字符串数据右截断,字符串类型数据,字符串型数据,二进制数据转字符串等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
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 t
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

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

相关文章

  • 2017-05-11基于ASP实现QQ在线查询功能
  • 2017-05-11ASP存储过程开发应用详解第1/2页
  • 2017-05-11ASP基础入门第五篇(ASP脚本循环语句)
  • 2017-05-11ASP 程序实现自动升级功能
  • 2017-05-11ASP生成随机数 ASP生成不重复随机数
  • 2017-05-11在ASP中调用存储过程的几种方法
  • 2017-05-11高手推荐的比较有用的ASP函数集合
  • 2017-05-11如何编写一个ASP类
  • 2017-05-11提高ASP页面执行效率的方法分析
  • 2017-05-11用XML+FSO+JS实现服务器端文件的

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 独孤剑写的马克斯迅雷片库采集插件1.4 官方最新版提供下载了
    • asp 在线备份与恢复sqlserver数据库的代码
    • 两个小函数让你的ASP程序对SQL注入免疫!
    • 用ASP应用程序实现自己的UrlDeCode
    • ASP远程保存图片
    • asp数组使用(2)
    • isnumeric检测是否为数字类型的asp代码
    • ASP 支持中文的len(),left(),right()的函数代码
    • ASP连接数据库的全能代码
    • 用ASP实现距指定日期的倒记时程序源码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有