Dictionary对象

Dictionary对象是一个COM组件,提供了信息存储的功能。它用键对(key-item pairs)来存储信息,每个item值都会对应一个key,你可以把Dictionary想象成下面的这样的一个集合,每行条目就是一个键对:

{
"key","item"
name,web
sex,male
height,182cm
weight,80kg
...
}

Dictionary很像一个数组,但是不同的是,Dictionary 不要求使用前确定需要存储的元素的数目。

当创建了一个 Dictionary 对象之后,需要配置 Dictionary 的字符串比较模式,Dictionary有两种字符串比较模式:binary mode和text mode。在binary模式下,脚本的字符串处理是以ASCⅡ码进行的,所以对于每个键对中的key是区分大小写的,而text模式不会,假设在binary模式下建立两个名称为name和Name的key,这个操作是可行的,而在text模式下则会得到提示该key已存在。可以使用Dictionary对象的CompareMode属性可以设置字符串比较模式,该属性有两个值:

0-代表二进制模式,这个是默认选项。
1 – 代表 text 模式。

Dictionary对象提供了一些操作方法,其中Add方法可以向Dictionary中添加key-item对,Add需要两个参数,按照如下顺序并且用逗号分开:

CreateObject("Scripting.Dictionary").Add "key","item"

创建一个Dictionary对象

下面演示如何使用vbs创建一个Dictionary实例:

'创建一个Dictionary实例
Dim objDictionary
Set objDictionary = CreateObject("Scripting.Dictionary")
'设置字符串比较模式为text模式
objDictionary.CompareMode = 1
'添加key-item对
objDictionary.Add "name","web"
objDictionary.Add "sex","male"
objDictionary.Add "height","182cm"
objDictionary.Add "weight","80kg"

其他一些方法

'显示key-item对的数量
Wscript.Echo objDictionary.Count
'返回
4
                                                                                                                   
'返回特定key的item值
Wscript.Echo objDictionary.Item("name")
'返回
web
'注意 当输入的key的不存在时,并不会报错,脚本会新建一个key,把输入的字符作为key名称,并给item赋值Null
                                                                                                                           
'检查特定key是否存在,存在返回-1,否则返回0
Wscript.Echo objDictionary.Exists("name")
'返回
-1
                                                                                                                                
'修改特定的key的值
objDictionary.Item("name") = "scott"
Wscript.Echo objDictionary.Item("name")
'返回
scott
                                                                                                                     
'移除key-item对
objDictionary.Remove("name") '删除一对
objDictionary.RemoveAll '删除所有对
此外还能返回集合

'显示所有key
Set colkey = objDictionary.Keys
For Each sigkey in colkey
Wscript.Echo sigkey
Next
'返回
name
sex
height
weight
                                                                                     
'显示所有item
Set colitem = objDictionary.Items
For Each sigitem in colitem
Wscript.Echo sigitem
Next
'返回
web
male
182cm
80kg