我们常用 Hashtable 来描述索引键/值组的集合,Hashtable 的键值是区分大小写的。

让 Hashtable 的键值不区分大小写        Dim oHash As New Hashtable()
让 Hashtable 的键值不区分大小写        
Dim bIsFind As Boolean
让 Hashtable 的键值不区分大小写
让 Hashtable 的键值不区分大小写        oHash.Add(
"A""ValueA")
让 Hashtable 的键值不区分大小写        oHash.Add(
"B""ValueA")
让 Hashtable 的键值不区分大小写        oHash.Add(
"C""ValueA")
让 Hashtable 的键值不区分大小写
让 Hashtable 的键值不区分大小写        bIsFind 
= oHash.Contains("a"'鍵值 "a" 不存在
让 Hashtable 的键值不区分大小写
        bIsFind = oHash.Contains("A"'鍵值 "A" 存在


若我们需要让 Hasktable 不区分大小写怎么处理呢?常看到的一种作法就是在 Hasktable 的加入/移除时先将键值全转为小写(或大写),而判断时也将键值同样转为小写(或大写)。

让 Hashtable 的键值不区分大小写        Dim oHash As New Hashtable()
让 Hashtable 的键值不区分大小写        
Dim bIsFind As Boolean
让 Hashtable 的键值不区分大小写
让 Hashtable 的键值不区分大小写        oHash.Add(
"A".ToLower, "ValueA")
让 Hashtable 的键值不区分大小写        oHash.Add(
"B".ToLower, "ValueA")
让 Hashtable 的键值不区分大小写        oHash.Add(
"C".ToLower, "ValueA")
让 Hashtable 的键值不区分大小写
让 Hashtable 的键值不区分大小写        bIsFind 
= oHash.Contains("a".ToLower) '鍵值 "a" 存在
让 Hashtable 的键值不区分大小写
        bIsFind = oHash.Contains("A".ToLower) '鍵值 "A" 存在


当然上述的方式是可行为,不过略显麻烦,若键值忘了转换就加入就容易导致找不到的情形,最好的方式就是由 Hashtable 本身自行处理,让开发人员无需去理会键值大小写。
在 Hasktable 的有一多载的建构函式如下

)


所以我们只要撰写一个具 IEqualityComparer 接口的类别来做键值比对就可以了。

End Class


当我们要使用 Hasktable 时,只要使用自定义具 IEqualityComparer 的类别来初始化 Hasktable 即可。

让 Hashtable 的键值不区分大小写
让 Hashtable 的键值不区分大小写        
Dim oHash As New Hashtable(New THashKeyComparer())
让 Hashtable 的键值不区分大小写        
Dim bIsFind As Boolean
让 Hashtable 的键值不区分大小写
让 Hashtable 的键值不区分大小写        oHash.Add(
"A""ValueA")
让 Hashtable 的键值不区分大小写        oHash.Add(
"B""ValueA")
让 Hashtable 的键值不区分大小写        oHash.Add(
"C""ValueA")
让 Hashtable 的键值不区分大小写
让 Hashtable 的键值不区分大小写        bIsFind 
= oHash.Contains("a"'鍵值 "a" 存在
让 Hashtable 的键值不区分大小写
        bIsFind = oHash.Contains("A"'鍵值 "A" 存在


 

相关文章:

  • 2021-08-23
  • 2021-12-23
  • 2021-05-16
  • 2022-01-16
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-11-25
  • 2022-02-08
  • 2021-08-02
  • 2021-12-23
  • 2021-05-27
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案