码迷,mamicode.com
首页 > 编程语言 > 详细

[VBS]脚本中的字典、动态数组、队列和堆栈

时间:2015-07-30 18:30:12      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:

今天用VBS脚本写了几个程序,用到了字典(Dictionary)、动态数组(ArrayList)、队列(Queue)和堆栈(Stack)。现在写篇Blog总结一下 :-)

1.编写环境

今天突发奇想下载了个gVim来写VBS脚本,我用的版本是7.4的

在写脚本前,需要在gVim的安装根目录下,找到文件“_vimrc”,在里面添加下面三行:

set number
set softtabstop=4
set tabstop=4

意思分别是“显示行号”、“按退格键一次删掉4个空格”和“设定Tab长度为4个字符”

这个设置类似于Linux系统下文件“.vimrc”的配置

2.字典:Scripting.Dictionary

VBS中的字典需要使用Scripting.Dictionary

脚本文件:a.vbs,包含字典的添加、删除、判断键是否存在、修改键、修改值、遍历、统计键值对个数

Option Explicit
 
建立字典
Dim Dict : Set Dict = CreateObject("Scripting.Dictionary")
 
添加键值对
Dict.Add "Key1", "Item1"
Dict.Add "Key2", "Item2"
Dict.Add "Key3", "Item3"
 
字典中键值对数量
WScript.Echo "字典中现有键值对数量: " & Dict.Count
 
WScript.Echo 
 
检查指定键是否存在
If Dict.Exists("Key1") Then
    WScript.Echo "Key1 存在!"
Else
    WScript.Echo "Key1 不存在!"
End If
 
If Dict.Exists("Keyn") Then
    WScript.Echo "Keyn 存在!"
Else
    WScript.Echo "Keyn 不存在!"
End If
 
WScript.Echo 
 
遍历字典
Sub TraverseDict
    Dim DictKeys, DictItems, Counter
    DictKeys = Dict.Keys
    DictItems = Dict.Items
    For Counter = 0 To Dict.Count - 1
        WScript.Echo _
            "键: " & DictKeys(Counter) & _
            "值: " & DictItems(Counter)
    Next
End Sub
 
TraverseDict
 
WScript.Echo 
 
在一个键值对中,修改键或修改值
Dict.Key("Key2") = "Keyx"
Dict.Item("Key1") = "Itemx"
TraverseDict
 
WScript.Echo 
 
删除指定键
Dict.Remove("Key3")
TraverseDict
 
WScript.Echo 
 
删除全部键
Dict.RemoveAll
WScript.Echo "字典中现有键值对数量: " & Dict.Count

调用方法:通过双击a.bat调用,a.bat代码如下:

1 cscript a.vbs
2 pause

运行结果截图:

技术分享

2.动态数组:System.Collections.ArrayList

VBS中的动态数组需要使用System.Collections.ArrayList

脚本文件:b.vbs,包含动态数组的添加元素、删除元素、遍历、统计元素个数、清空

 1 Option Explicit
 2  
 3 建立动态数组
 4 Dim Arrl : Set Arrl = CreateObject("System.Collections.ArrayList")
 5  
 6 添加元素
 7 Arrl.Add "Element3"
 8 Arrl.Add "Element2"
 9 Arrl.Add "Element1"
10  
11 查看动态数组中的元素数
12 WScript.Echo "动态数组中现有元素数量: " & Arrl.Count
13 WScript.Echo "动态数组容量: " & Arrl.Capacity
14  
15 WScript.Echo
16  
17 遍历动态数组
18 Sub TraverseArrl
19     Dim Counter
20     For Counter = 0 To Arrl.Count - 1
21         WScript.Echo Arrl(Counter)
22     Next
23 End Sub
24 TraverseArrl
25  
26 WScript.Echo
27  
28 动态数组排序
29 Arrl.Sort
30 TraverseArrl
31  
32 WScript.Echo
33  
34 删除指定元素
35 Arrl.Remove("Element1")
36 TraverseArrl
37  
38 WScript.Echo
39  
40 清空全部元素
41 Arrl.Clear
42 WScript.Echo "动态数组中现有元素数量: " & Arrl.Count
43 WScript.Echo "动态数组容量: " & Arrl.Capacity

调用方法:通过双击b.bat调用,b.bat代码如下:

1 cscript b.vbs
2 pause

运行结果截图:

技术分享

3.队列:System.Collections.Queue

VBS中的队列需要使用System.Collections.Queue

脚本文件:c.vbs,包含队列的添加元素(入队)、删除元素(出队)、遍历、统计元素个数、清空

 
 1 Option Explicit
 2  
 3 建立队列
 4 Dim Que : Set Que = CreateObject("System.Collections.Queue")
 5  
 6 Que.EnQueue("Element1")
 7 Que.EnQueue("Element2")
 8 Que.EnQueue("Element3")
 9  
10 查看队列中的元素数
11 WScript.Echo "队列中的元素数: " & Que.Count
12  
13 WScript.Echo
14  
15 遍历队列
16 Sub TraverseQue
17     Dim ArrQue : ArrQue = Que.ToArray
18     Dim Counter
19     For Counter = 0 To UBound(ArrQue)
20         WScript.Echo ArrQue(Counter)
21     Next
22 End Sub
23 TraverseQue
24  
25 WScript.Echo
26  
27 退出队列
28 WScript.Echo Que.DeQueue
29 WScript.Echo "---"
30 TraverseQue
31 WScript.Echo
32  
33 清空队列
34 Que.Clear
35 WScript.Echo "队列中的元素数: " & Que.Count
调用方法:通过双击c.bat调用,c.bat代码如下:
1 cscript c.vbs
2 pause
运行结果截图:

技术分享

4.堆栈:System.Collections.Stack

VBS中的堆栈需要使用System.Collections.Stack

脚本文件:d.vbs,包含堆栈的添加元素(压栈)、删除元素(出栈)、遍历、统计元素个数、清空

 1 Option Explicit
 2  
 3 建立堆栈
 4 Dim Stk : Set Stk = CreateObject("System.Collections.Stack")
 5  
 6 Stk.Push "Element1"
 7 Stk.Push "Element2"
 8 Stk.Push "Element3"
 9  
10 查看堆栈中的元素数
11 WScript.Echo "堆栈中的元素数: " & Stk.Count
12  
13 WScript.Echo
14  
15 遍历堆栈
16 Sub TraverseStk
17     Dim ArrStk : ArrStk = Stk.ToArray
18     Dim Counter
19     For Counter = 0 To UBound(ArrStk)
20         WScript.Echo ArrStk(Counter)
21     Next
22 End Sub
23 TraverseStk
24  
25 WScript.Echo
26  
27 元素出栈
28 WScript.Echo Stk.Pop
29 WScript.Echo "---"
30 TraverseStk
31  
32 WScript.Echo
33  
34 清空堆栈
35 Stk.Clear
36 WScript.Echo "堆栈中的元素数: " & Stk.Count

调用方法:通过双击d.bat调用,d.bat代码如下:

1 cscript d.vbs
2 pause

运行结果截图:

技术分享

[VBS]脚本中的字典、动态数组、队列和堆栈

标签:

原文地址:http://www.cnblogs.com/masonlu/p/4689857.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!