VBS 脚本中的字典、动态数组、队列和堆栈实现代码(vbs dictionary)学会了吗

随心笔谈9个月前发布 admin
204 00
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买

文章摘要

这篇文章介绍了在VBS脚本中如何使用常见的数据结构,包括字典、动态数组、队列和堆栈。作者在gVim中配置了ViScript环境,并展示了如何在VBS脚本中创建和操作这些数据结构。 1. **字典**:用于存储键值对,提供了基本的操作功能,如添加、删除、查找和遍历。通过ViScript的`Scripting.Dictionary`对象,可以实现这些功能,并通过`TraverseDict`函数遍历键值对。 2. **动态数组**:使用`System.Collections.ArrayList`实现,支持添加、删除、遍历和统计元素个数。通过`TraverseArrl`函数可以遍历数组元素,并支持排序和清空操作。 3. **队列**:基于`System.Collections.Queue`实现,允许添加元素(入队)、删除元素(出队)、遍历和统计元素个数。遍历时使用数组转换方法,队列的遍历顺序由出队顺序决定。 4. **堆栈**:基于`System.Collections.Stack`实现,支持压栈、出栈、遍历和清空操作。遍历顺序与入栈顺序无关,堆栈遵循先进后出的规则。 文章还指出,队列和堆栈的遍历顺序与它们的存储顺序不同,队列是按照出队的顺序遍历,而堆栈是按照出栈的顺序遍历。这些内容通过示例脚本和运行结果截图进行了说明。



1.编写环境

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

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

set number

set softtabstop=4

set tabstop=4

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

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

1.字典: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代码如下:

cscript a.vbs

pause

运行结果截图:

VBS 脚本中的字典、动态数组、队列和堆栈实现代码(vbs dictionary)学会了吗

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

运行结果截图:

 VBS 脚本中的字典、动态数组、队列和堆栈实现代码(vbs dictionary)学会了吗

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

运行结果截图:

VBS 脚本中的字典、动态数组、队列和堆栈实现代码(vbs dictionary)学会了吗

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

运行结果截图:

VBS 脚本中的字典、动态数组、队列和堆栈实现代码(vbs dictionary)学会了吗

可以看出,遍历队列和堆栈时,遍历顺序时由出队和出栈的顺序决定的,而不是入队和压栈的顺序

© 版权声明

相关文章