zoukankan      html  css  js  c++  java
  • [VBS]脚本中的字典、动态数组、队列和堆栈

    今天用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

    运行结果截图:

  • 相关阅读:
    JavaSE 学习笔记04丨异常
    Codeforces Round #677 (Div. 3) E、G题解
    JavaSE 学习笔记03丨继承、接口、多态、内部类
    ftp通过了用户验证但是连接超时
    实型变量
    3dmax放样
    画直线算法
    VAE变分自动编码器
    RNN 、LSTM长短期记忆网络
    java比较字符串
  • 原文地址:https://www.cnblogs.com/masonlu/p/4689857.html
Copyright © 2011-2022 走看看