asp数组比较,在线等

wangyingdong 2008-12-27 03:12:50
现在有两组数据:
a="2008-12-19|1000,2008-12-20|2000,2008-12-21|3000"
b="2008-12-20|1500,2008-12-21|2000"

其中 2008-12-19|1000,用的是"|"分隔的,前面的是日期,后面的是值,作画图用的

现在a和b比较,拿a作为比较的值,重新得到的b应该是:

b="2008-12-19|null,2008-12-20|1500,2008-12-21|2000"

b中没有的日期,用a的,没有的值是null,这种怎么做呢?

谢谢。。
...全文
263 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangyingdong 2008-12-27
  • 打赏
  • 举报
回复
谢谢大家,学到了很多知识。。

toury 2008-12-27
  • 打赏
  • 举报
回复

<%
a = "2008-12-19|1000,2008-12-20|2000,2008-12-21|3000"
b = "2008-12-20|1500,2008-12-21|2000"

arr = Split(a, ",")

For I = 0 To UBound(arr)
temp = Split(arr(I), "|")(0) & "|"
If InStr(b, temp) = 0 Then b = b & "," & temp & "null"
Next
arr = Sort(Split(b, ","))'冒泡排一下序就OK了
b = Join(arr, ",")
response.write b


Function Sort(a)
blnChk = True
Do Until blnChk = False
blnChk = False
For I = 0 To UBound(a)
If I = UBound(a) Then Exit For
If a(I) > a(I + 1) Then
FirstValue = a(I)
SecondValue = a(I + 1)
a(I) = SecondValue
a(I + 1) = FirstValue
blnChk = True
End If
Next
Loop
Sort = a
End Function

%>
wangyingdong 2008-12-27
  • 打赏
  • 举报
回复
谢谢大家,我试一下。。

用的是amchart曲线线, 按7楼的方法,会不会每次要耗很多时间呢?

以前没用过 server.createobject("Scripting.Dictionary") 这个。呵呵。

三楼の郎 2008-12-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 toury 的回复:]
HTML code
<%
a = "2008-12-19|1000,2008-12-20|2000,2008-12-21|3000"
b = "2008-12-20|1500,2008-12-21|2000"

arr = Split(a, ",")

For i = 0 To UBound(arr)
temp = Split(arr(i), "|")(0) & "|"
If InStr(b, temp) = 0 Then b = b & temp & "null"
Next
response.write b
%>
[/Quote]

是好办法,稍改一下

<%
a = "2008-12-19|1000,2008-12-20|2000,2008-12-21|3000"
b = "2008-12-20|1500,2008-12-21|2000"

arr = Split(a, ",")

For i = 0 To UBound(arr)
temp = Split(arr(i), "|")(0) & "|"
If InStr(b, temp) = 0 Then
if right(b,1)="," then
b = b & temp & "null"
else
b=b & "," & temp & "null"
end if
end if
Next
response.write b
%>


结果:2008-12-20|1500,2008-12-21|2000,2008-12-19|null
三楼の郎 2008-12-27
  • 打赏
  • 举报
回复
dim mydata那一行可以不要,多声明了一个mydata变量
三楼の郎 2008-12-27
  • 打赏
  • 举报
回复

Dim a
Dim b
a = "2008-12-19|1000,2008-12-20|2000,2008-12-21|3000"
b = "2008-12-20|1500,2008-12-21|2000"

Dim col_a
Dim col_b

set col_a =server.createobject("Scripting.Dictionary")
set col_b =server.createobject("Scripting.Dictionary")

Dim arr_a
Dim arr_b
Dim arr_tmp

If Len(a) <> 0 Then
arr_a = Split(a, ",")
End If

If Len(b) <> 0 Then
arr_b = Split(b, ",")
End If

Dim mydata

Dim xx
For xx = 0 To UBound(arr_a)
arr_tmp = Split(arr_a(xx), "|")
col_a.Add arr_tmp(0),arr_tmp(1)
Next

For xx = 0 To UBound(arr_b)
arr_tmp = Split(arr_b(xx), "|")
col_b.Add arr_tmp(0),arr_tmp(1)
Next

dim yy
yy=col_a.keys

For xx = 0 To col_a.Count-1
If col_b.exists(yy(xx)) Then
col_a.item(yy(xx))=col_b.item(yy(xx))
else
col_a.Item(yy(xx)) = "null"
End If
Next

For xx=0 to col_a.count-1
response.write(yy(xx)+"|"+col_a.item(yy(xx))+",")
next
Jarvis-Li 2008-12-27
  • 打赏
  • 举报
回复
你主要看一下思路吧
asp我已经好久没用过了,也忘了语法了,


public string aaa()
{
string a = "";
string b = "";
string[] atemp=a.Split(',');
string[] atime;
string[] btemp = b.Split(',');
string[] btime;
string temp = "";
for (int i = 0; i < atemp.Length; i++)
{
atime = atemp[i].Split('|');
int jtemp=-1 ;
for (int j = 0; j < btemp.Length; j++)
{
btime = btemp[j].Split('|');
if (atime[0] == btime[0])
{
jtemp=j;
}
}
if (jtemp!=-1)
{
if (i == 0)
{
temp = btemp[jtemp];

}
else
{
temp =temp + "," + btemp[jtemp];
}
}
else {

if (i == 0)
{
temp = atime[0]+"|"+"null";

}
else
{
temp = temp + "," + atime[0] + "|" + "null";
}

}
}
return temp;

}


wangyingdong 2008-12-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 toury 的回复:]
HTML code
<%
a = "2008-12-19|1000,2008-12-20|2000,2008-12-21|3000"
b = "2008-12-20|1500,2008-12-21|2000"

arr = Split(a, ",")

For i = 0 To UBound(arr)
temp = Split(arr(i), "|")(0) & "|"
If InStr(b, temp) = 0 Then b = b & temp & "null"
Next
response.write b
%>
[/Quote]

得出的结果是:

2008-12-20$1500,2008-12-21$20002008-12-19$1000|null2008-12-20$2000|null2008-12-21$3000|null

和我要的结果不一样的,我要的结果是:

b="2008-12-19|null,2008-12-20|1500,2008-12-21|2000"

谢谢大家。。。
wangyingdong 2008-12-27
  • 打赏
  • 举报
回复
是这样的,因为要用作曲图用的。

查数据库得出的一组数据:

a="2008-12-19|1000,2008-12-20|2000,2008-12-21|3000"

b="2008-12-20|1500,2008-12-21|2000"

2008-12-19|1000 表示的意思是:用的是"|"分隔的,前面的是日期,后面的是值

b值现在没有 2008-12-19的数据,我想怎样把b的值重新构造成

也就是说,没有哪天没值的话,然后想办法把他重新赋值,

b="2008-12-19|null,2008-12-20|1500,2008-12-21|2000"

不知道,我说明白了没有,谢谢大家。

toury 2008-12-27
  • 打赏
  • 举报
回复

<%
a = "2008-12-19|1000,2008-12-20|2000,2008-12-21|3000"
b = "2008-12-20|1500,2008-12-21|2000"

arr = Split(a, ",")

For i = 0 To UBound(arr)
temp = Split(arr(i), "|")(0) & "|"
If InStr(b, temp) = 0 Then b = b & temp & "null"
Next
response.write b
%>
Jarvis-Li 2008-12-27
  • 打赏
  • 举报
回复
没明白问的是什么
parss 2008-12-27
  • 打赏
  • 举报
回复
我很少用数组操作,虽然我知道它速度快。

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧