[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[原创] 在 VBScript 中使用哈希表(Hashtable)

环境要求


  • Windows XP 及以上。
  • Windows 10Windows 11Windows 功能 中勾选 .NET Framework 3.5 (包括 .NET 2.0 和 3.0)

使用

创建一个 Hashtable 对象:
  1. Set oHT = CreateObject("System.Collections.Hashtable")
复制代码
Count 属性:返回表中键值对的数量
  1. Set oHT = CreateObject("System.Collections.Hashtable")
  2. WSH.Echo oHT.Count()
复制代码
  1. 0
复制代码
IsFixedSize 属性:哈希表是否具有固定大小

由于 VBS 无法调用构造函数,故只能创建动态大小的哈希表。

故会固定返回 False
  1. Set oHT = CreateObject("System.Collections.Hashtable")
  2. WSH.Echo oHT.IsFixedSize()
复制代码
  1. 0
复制代码
IsReadOnly 属性:哈希表是否只读

由于 VBS 无法调用构造函数,故只能创建可读写的哈希表。

故会固定返回 False
  1. Set oHT = CreateObject("System.Collections.Hashtable")
  2. WSH.Echo oHT.IsReadOnly()
复制代码
  1. 0
复制代码
IsSynchronized 属性:哈希表是否线程安全

由于 VBS 为单线程,该属性无意义。

会固定返回 False
  1. Set oHT = CreateObject("System.Collections.Hashtable")
  2. WSH.Echo oHT.IsSynchronized()
复制代码
  1. 0
复制代码
Item 属性:表示指定键对应的键值对
  1. Set oHT = CreateObject("System.Collections.Hashtable")
  2. oHT.Item("key") = "value"
  3. WSH.Echo oHT.Item("key")
复制代码
  1. value
复制代码
  1. Set oHT.Item("oRE") = New RegExp
  2. WSH.Echo TypeName(oHT.Item("oRE"))
复制代码
  1. IRegExp2
复制代码
Default 默认属性:表示指定键对应的键值对

Item 属性。
  1. Set oHT = CreateObject("System.Collections.Hashtable")
  2. oHT("key") = "value"
  3. WSH.Echo oHT("key")
复制代码
  1. value
复制代码
  1. Set oHT("oRE") = New RegExp
  2. WSH.Echo TypeName(oHT("oRE"))
复制代码
  1. IRegExp2
复制代码
Add 方法:新添键值对

若键已经存在会抛出错误。
  1. Set oHT = CreateObject("System.Collections.Hashtable")
  2. oHT.Add "key", "value"
  3. WSH.Echo oHT("key")
复制代码
  1. value
复制代码
  1. Set oHT = CreateObject("System.Collections.Hashtable")
  2. oHT.Add "duplicate", 0
  3. On Error Resume Next
  4. oHT.Add "duplicate", 1
  5. WSH.Echo Err.Number = 0
  6. Err.Clear
复制代码
  1. 0
复制代码
Clear 方法:移除表内所有键值对
  1. Set oHT = CreateObject("System.Collections.Hashtable")
  2. oHT.Add "key", "value"
  3. oHT.Clear
  4. WSH.Echo oHT.Count
复制代码
  1. 0
复制代码
Clone 方法:创建哈希表的副本
  1. Set oHT = CreateObject("System.Collections.Hashtable")
  2. Set oHT2 = oHT
  3. Set oHT3 = oHT.Clone
  4. oHT.Add "key", "value"
  5. WSH.Echo oHT.Count, oHT2.Count, oHT3.Count
复制代码
  1. 1 1 0
复制代码
Contains 方法:判断哈希表是否包含指定键
  1. Set oHT = CreateObject("System.Collections.Hashtable")
  2. oHT.Add "key", "value"
  3. WSH.Echo oHT.Contains("key"), oHT.Contains("other")
复制代码
  1. -1 0
复制代码
ContainsKey 方法:判断哈希表是否包含指定键

Contains 方法。
  1. Set oHT = CreateObject("System.Collections.Hashtable")
  2. oHT.Add "key", "value"
  3. WSH.Echo oHT.ContainsKey("key"), oHT.ContainsKey("other")
复制代码
  1. -1 0
复制代码
ContainsValue 方法:判断哈希表是否包含指定值
  1. Set oHT = CreateObject("System.Collections.Hashtable")
  2. oHT.Add "key", "value"
  3. WSH.Echo oHT.ContainsValue("value"), oHT.ContainsValue("other")
复制代码
  1. -1 0
复制代码
Equals 方法:判断是否为同一哈希表
  1. Set oHT = CreateObject("System.Collections.Hashtable")
  2. Set oHT2 = oHT
  3. Set oHT3 = oHT.Clone
  4. WSH.Echo oHT.Equals(oHT2), oHT.Equals(oHT3)
复制代码
  1. -1 0
复制代码
GetHashCode 方法:返回哈希表的哈希
  1. Set oHT = CreateObject("System.Collections.Hashtable")
  2. Set oHT2 = oHT
  3. Set oHT3 = oHT.Clone
  4. WSH.Echo oHT.GetHashCode, oHT2.GetHashCode, oHT3.GetHashCode
复制代码
  1. 54267293 54267293 18643596
复制代码
Remove 方法:从哈希表中移除指定键对应的键值对

若键不存在,则什么也不做。
  1. Set oHT = CreateObject("System.Collections.Hashtable")
  2. oHT.Add "key", "value"
  3. oHT.Remove "key"
  4. oHT.Remove "nothing"
  5. WSH.Echo oHT.Count
复制代码
  1. 0
复制代码
ToString 方法:返回哈希表的类型名
  1. Set oHT = CreateObject("System.Collections.Hashtable")
  2. WSH.Echo oHT.ToString(), TypeName(oHT)
复制代码
  1. System.Collections.Hashtable Hashtable
复制代码
参考

返回列表