VBS 腳本中的字典、動態數組、隊列和堆棧

今天用VBS腳本寫了幾個程序,用到了字典(Dictionary)、動態數組(ArrayList)、隊列(Queue)和堆棧(Stack)。如今寫篇Blog總結一下 :-)vim

1.編寫環境數組

今天突發奇想下載了個gVim來寫VBS腳本,我用的版本是7.4的bash

在寫腳本前,須要在gVim的安裝根目錄下,找到文件「_vimrc」,在裏面添加下面三行:code

set number
set softtabstop=4
set tabstop=4

意思分別是「顯示行號」、「按退格鍵一次刪掉4個空格」和「設定Tab長度爲4個字符」排序

這個設置相似於Linux系統下文件「.vimrc」的配置隊列

2.字典:Scripting.Dictionaryip

VBS中的字典須要使用Scripting.Dictionaryci

腳本文件:a.vbs,包含字典的添加、刪除、判斷鍵是否存在、修改鍵、修改值、遍歷、統計鍵值對個數it

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代碼以下:io

cscript a.vbs
pause

運行結果截圖:

2.動態數組:System.Collections.ArrayList

VBS中的動態數組須要使用System.Collections.ArrayList

腳本文件:b.vbs,包含動態數組的添加元素、刪除元素、遍歷、統計元素個數、清空

Option Explicit

'創建動態數組
Dim Arrl : Set Arrl = CreateObject("System.Collections.ArrayList")

'添加元素
Arrl.Add "Element3"
Arrl.Add "Element2"
Arrl.Add "Element1"

'查看動態數組中的元素數
WScript.Echo "動態數組中現有元素數量: " & Arrl.Count
WScript.Echo "動態數組容量: " & Arrl.Capacity

WScript.Echo

'遍歷動態數組
Sub TraverseArrl
    Dim Counter
    For Counter = 0 To Arrl.Count - 1
        WScript.Echo Arrl(Counter)
    Next
End Sub
TraverseArrl

WScript.Echo

'動態數組排序
Arrl.Sort
TraverseArrl

WScript.Echo

'刪除指定元素
Arrl.Remove("Element1")
TraverseArrl

WScript.Echo

'清空所有元素
Arrl.Clear
WScript.Echo "動態數組中現有元素數量: " & Arrl.Count
WScript.Echo "動態數組容量: " & Arrl.Capacity

調用方法:經過雙擊b.bat調用,b.bat代碼以下:

cscript b.vbs
pause

運行結果截圖:

3.隊列:System.Collections.Queue

VBS中的隊列須要使用System.Collections.Queue

腳本文件:c.vbs,包含隊列的添加元素(入隊)、刪除元素(出隊)、遍歷、統計元素個數、清空

Option Explicit

'創建隊列
Dim Que : Set Que = CreateObject("System.Collections.Queue")

Que.EnQueue("Element1")
Que.EnQueue("Element2")
Que.EnQueue("Element3")

'查看隊列中的元素數
WScript.Echo "隊列中的元素數: " & Que.Count

WScript.Echo

'遍歷隊列
Sub TraverseQue
    Dim ArrQue : ArrQue = Que.ToArray
    Dim Counter
    For Counter = 0 To UBound(ArrQue)
        WScript.Echo ArrQue(Counter)
    Next
End Sub
TraverseQue

WScript.Echo

'退出隊列
WScript.Echo Que.DeQueue
WScript.Echo "---"
TraverseQue
WScript.Echo

'清空隊列
Que.Clear
WScript.Echo "隊列中的元素數: " & Que.Count

調用方法:經過雙擊c.bat調用,c.bat代碼以下:

cscript c.vbs
pause

運行結果截圖:

4.堆棧:System.Collections.Stack

VBS中的堆棧須要使用System.Collections.Stack

腳本文件:d.vbs,包含堆棧的添加元素(壓棧)、刪除元素(出棧)、遍歷、統計元素個數、清空

Option Explicit

'創建堆棧
Dim Stk : Set Stk = CreateObject("System.Collections.Stack")

Stk.Push "Element1"
Stk.Push "Element2"
Stk.Push "Element3"

'查看堆棧中的元素數
WScript.Echo "堆棧中的元素數: " & Stk.Count

WScript.Echo

'遍歷堆棧
Sub TraverseStk
    Dim ArrStk : ArrStk = Stk.ToArray
    Dim Counter
    For Counter = 0 To UBound(ArrStk)
        WScript.Echo ArrStk(Counter)
    Next
End Sub
TraverseStk

WScript.Echo

'元素出棧
WScript.Echo Stk.Pop
WScript.Echo "---"
TraverseStk

WScript.Echo

'清空堆棧
Stk.Clear
WScript.Echo "堆棧中的元素數: " & Stk.Count

調用方法:經過雙擊d.bat調用,d.bat代碼以下:

cscript d.vbs
pause

運行結果截圖:

能夠看出,遍歷隊列和堆棧時,遍歷順序時由出隊和出棧的順序決定的,而不是入隊和壓棧的順序

END

相關文章
相關標籤/搜索