Fragen, ob dies möglich ist.Verwendung von Hashtables/Dictionaries mit String-Schlüsseln und Case Insensitive Search
wir eine 3rd Party Bibliothek haben, die Identifikationsinformationen über Benutzer enthält ...
Die Haupt Interaktion mit der Bibliothek einen HashTable ist durch die mit einer Zeichenfolge eingegeben wird, und gibt eine Objektgraph von Informationen für diesen Schlüssel .
Das Problem ist, ist der Schlüssel offensichtlich Case Sensitive, aber was wir von dem Benutzer-Browser bekommen nicht unbedingt den Fall nicht überein ... (Wir bekommen oft den Schlüssel vollständig lowercase'd)
I‘ Ich frage mich, ob es möglich ist, einen Fall zu tun Insensitive Schlüsselsuche gegen eine Hashtabelle.
z.B.
Hashtable ht = new Hashtable();
ht.Add("MyKey", "Details");
string result = ht["MyKey"];
string result = ht["MYKEY"];
string result = ht["mykey"];
auf gut Glück wir ein Support-Ticket für das Unternehmen vorlegen könnte diese Funktionalität hinzufügen, gibt es andere Datenstrukturen (dh die neuen generischen Sammlungen/Wörterbücher), die diese Funktionalität
Schließlich unterstützen würde Es ist möglich, die Methode System.String GetHashCode() zu überschreiben, so dass alle case-invarianten Strings den gleichen Hash-Code zurückgeben, z. B. Ich denke, dies ist ein nicht-Geher als string
eine versiegelte Klasse
Prost ist, wenn jemand irgendwelche Vorschläge
als Nebenbemerkung: Wenn Sie .NET 3.5 verwenden, sollten Sie wahrscheinlich aufhören, Hashtable usw. zu verwenden - und stattdessen die generischen Sammlungen verwenden. –
Re deinen Kommentar: vielleicht einfach .ToLowerInvariant() auf alle deine Schlüssel, dann. –
* Kratzer Kopf * Aber die Schlüssel, die in der Hashtable sind, sind nicht ToLowered(). I.e. Ich habe eine vordefinierte Hashtabelle, die in einer DLL instanziiert/gefüllt wird. und die Schlüssel in HT sind Case-Sensitive ... Der einzige Zugriff, den ich auf die DLL habe, ist über einen Getter/Indexer, wo ich den Schlüssel übergebe, also selbst wenn ich meine Schlüssel auf der Außenseite nicht anpasste, würden sie die Schlüssel nicht übereinstimmen auf der Innenseite. –