网络编程
位置:首页>> 网络编程>> Asp编程>> asp dictionary对象使用介绍

asp dictionary对象使用介绍

作者:亮亮 来源:亮亮博客 发布时间:2008-05-30 13:51:00 

标签:dictionary,对象,数组

dictionary对象和数组有点相似,但无需用redim来改变dictionary的大小,dictionary也没有多维,dictionary比数组优秀的地方是比数组内建的方法多,操作比数组灵活些,在定位上和频繁访问上比数组效率高

首先建立dictionary对象

set dic=Server.CreateObject("Scripting.Dictionary")

下面是一些基本的用法示例

1.向 dictionary 对象添加新的键/值对

dic.Add "a","这是a"
dic.Add "aa","这是aa"
dic.item("a3")="增加a3"

2.返回dictionary 中某个键的值

response.Write(dic.item("aa")&"<br>")
response.Write(dic.item("a3")&"<br>")

3.为已有的键(key)设置新值

dic.item("aa")="aa的值变了"
response.Write(dic.item("aa")&"<br>")

4.返回在dictionary对象中键/值对的数目

response.Write(dic.count&"<br>")

5.返回在dictionary对象中是否存在指定的键(key)

response.Write(dic.Exists("a")&"<br>")

6.items返回dictionary对象中的所有值的一个数组

itemArr=dic.items
for i=0 to dic.Count-1
  Response.Write(itemArr(i)&"<br>")
next

7.keys方法返回dictionary对象中所有key的数组。

keyArr=dic.Keys
for i=0 to dic.Count-1
  Response.Write(keyArr(i)&"<br>")
next

8.设置键的比较模式

0 = vbBinaryCompare - 二进制比较
1 = vbTextCompare - 文本比较
2 = vbDatabaseCompare - 数据库比较

本来dic.Exists("A")返回false,但加上比较模式后将返回true

set dic=Server.CreateObject("Scripting.Dictionary")
dic.CompareMode=1
dic.Add "a","这是a"
dic.Add "aa","这是aa"
dic.item("a3")="增加a3"
response.Write(dic.Exists("A")&"<br>")

上面将打印出true

这样写也会报错 dic.Add "A","这是A"

9.删除指定的键/值对

dic.remove("aa")
dic.Exists("aa")将返回false
response.Write(dic.Exists("aa")&"<br>")

10.删除所有的键/值对

dic.removeall
response.Write(dic.Exists("a3")&"<br>")

最后当然就是释放对象

set dic=nothing

上面就是dictionary的一些基本用法,下面看看它的几个应用实例,下面的例子都是网上搜集到的,具体的作者不详!
先看这一个,代码如下:

str="海尔电脑.T618,联想电脑.GD88,TCL电脑.T720i,长虹电视.6610,TCL电脑.3300,长虹电视.M55,海尔电脑.T68ie,长虹电视.7650,长虹电视.7210,海尔电脑.P802,海尔电脑.T312"
response.Write(str&"<br />")
dim dic:Set dic = server.CreateObject("Scripting.Dictionary")
strArr=split(str,",")
for each strAtt in strArr
    str2Att=split(strAtt,".")
    if dic.Exists(str2Att(0)) then
           dic.Item(str2Att(0))=dic.Item(str2Att(0)) & "," & str2Att(1)    
     else        
           dic.Add str2Att(0),str2Att(1)            
     end if
next
for each strKey in dic.Keys 
    response.write "["&strKey&"]"&dic.Item(strKey)&"<br>"
next

查看效果

另外一个是利用dictionary创建二维数组的例子,这样做的优点是数组下标可以是字符串并且长度不是固定的

Set a1 = CreateObject("scripting.dictionary")
For i=1 To 9
  Set a2 = CreateObject("scripting.dictionary")
  For j=1 To 12
     a2.add CStr("aaa"&j),CStr("b"&i&"b"&j*10)
  Next
  a1.add ("bbb"&i),a2
  Set a2=Nothing
Next
For i=1 To 9
  For j=1 To 12
   acs=a1("bbb"&i)("aaa"&j)
   response.write acs&"    "
  Next
  response.write "<Br>"
Next
response.end
Set a1=Nothing 

查看演示

0
投稿

猜你喜欢

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