我在 VB.NET 中有一个 HashTable ,并使用纯ASCII字符串的键动态添加记录,但有时会包含特殊字符,如"的 @ "我有一堆钥匙以" @ "开头。添加 HashTable
是没有问题的Public Class MyHash
Inherits Collections.Hashtable
Sub New()
'Data coming from DB
me.Add(key, value)
'for example:
' me.add("@key", "value")
End Sub
End Class
工作正常....在调试器中查看对象会显示带有键的项目" @key "作为 HashTable 集合的元素。然而...
MyHash("@key")
退货" 没什么"还
MyHash.ContainsKey("@key")
返回" 错误"。
我不想用其他东西替换特殊字符,因为这些字符是关键所在......其他任何东西都会有所不同,并在未来创建一系列全新的问题。
在添加 HashTable 或查找期间,是否可以转义Key 值,或者可以为我继承的类设置的配置标志,例如一个编译器属性或什么使它工作并找到任何键的所有记录?
由于
答案 0 :(得分:2)
我在一个新的控制台项目中编写了以下代码:
Module Module1
Public Class MyHash
Inherits Collections.Hashtable
Sub New()
'Data coming from DB
Me.Add("@key", "value")
End Sub
End Class
Sub Main()
Dim h As New MyHash
Debug.Assert(h.ContainsKey("@key"))
Debug.Assert(h("@key") = "value")
End Sub
End Module
一切按预期工作(即使在观察窗口)。 “@”符号不需要任何转义。
可以肯定的是,因为theese数据来自db,所以密钥恰好是“@key”(例如,结尾处的空格)。读完键和值对后,我建议您查看:
Debug.Assert(key.Trim.Equals("@key"))
Debug.Assert(key.Equals("@key"))
如果第一个断言为真且第二个断言失败,那么您知道在字符串的开头和/或末尾有一些空格。