gpt4 book ai didi

.net - 使用带有字符串键和不区分大小写的搜索的哈希表/字典

转载 作者:行者123 更新时间:2023-12-03 13:41:16 28 4
gpt4 key购买 nike

想知道这是否可能。

我们有一个第 3 方库,其中包含有关用户的识别信息...

与库的主要交互是通过一个以字符串为键的 HashTable,并返回该键的信息对象图。

问题是, key 显然是区分大小写的,但我们从用户浏览器获得的不一定与大小写匹配......(我们经常得到完全小写的 key )

我想知道是否可以对哈希表进行不区分大小写的键搜索。

例如

Hashtable ht = new Hashtable();
ht.Add("MyKey", "Details");

string result = ht["MyKey"];
string result = ht["MYKEY"];
string result = ht["mykey"];

如果我们可以向公司提交支持票以添加此功能,是否有任何其他支持此功能的 DataStructures(即新的通用集合/字典)

最后,是否可以覆盖 System.String GetHashCode() 方法,以
使所有大小写不变的字符串返回相同的哈希码...例如我认为这是一个不受欢迎的 string是密封类

如果有人有任何建议,请欢呼

最佳答案

使哈希表比较不区分大小写的代码

对于 2.0、3.0、3.5

Hashtable ht = new Hashtable(StringComparer.InvariantCultureIgnoreCase);

您可以在 this 上获取有关 InvariantCultureIgnoreCase 与 OrdinalIgnoreCase 的信息。所以链接

或者
Hashtable ht = System.Collections.Specialized.CollectionsUtil.CreateCaseInsensitiveHashtable();

由于不区分大小写的字典集合非常常见,因此 .NET Framework 有一个 CollectionUtil 类,该类支持创建不区分大小写的 Hashtable 和 SortedList 对象。通过调用 CreateCaseInsensitiveHashtable 或 CreateCaseInsensitiveSortedList 使用。

对于 .Net 1.0(我不确定 1.0 是否支持 StringComparer)
public class InsensitiveComparer : IEqualityComparer
{
CaseInsensitiveComparer _comparer = new CaseInsensitiveComparer();
public int GetHashCode(object obj)
{
return obj.ToString().ToLowerInvariant().GetHashCode();
}

public new bool Equals(object x, object y)
{
if (_comparer.Compare(x, y) == 0)
{
return true;
}

else
{
return false;
}
}
}

Hashtable dehash = new Hashtable(new InsensitiveComparer());

关于.net - 使用带有字符串键和不区分大小写的搜索的哈希表/字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/856989/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com