Chiedersi se è possibile.Utilizzo di hash/Dizionari con tasti stringa e ricerca senza distinzione tra maiuscole e minuscole
Abbiamo una libreria di terze parti che contiene le informazioni di identificazione sugli utenti ...
L'interazione principale con la biblioteca è attraverso un HashTable che viene digitato con una stringa, e restituisce un oggetto grafico di informazioni per quella chiave .
Il problema è che la chiave è ovviamente il caso sensibile, ma ciò che si ottiene dal browser degli utenti non corrisponde necessariamente il caso ... (Spesso ottenere la chiave completamente lowercase'd)
I' Mi chiedo se sia possibile fare un caso. Ricerca di una chiave insensibile contro un hashtable.
ad es.
Hashtable ht = new Hashtable();
ht.Add("MyKey", "Details");
string result = ht["MyKey"];
string result = ht["MYKEY"];
string result = ht["mykey"];
Sulla remota possibilità che potremmo inviare una richiesta di assistenza alla società di aggiungere questa funzionalità, vi siano eventuali altre strutture di dati (vale a dire le nuove collezioni generici/dizionari) che supportano questa funzionalità
Infine, sarebbe è possibile sovrascrivere il metodo System.String GetHashCode(), su fare in modo che tutte le stringhe di invarianza del caso restituiscano lo stesso codice hash ... ad esempio Sto pensando che questo è un no frequentatore come string
è una classe sealed
Acclamazioni se qualcuno ha qualche suggerimento
come una parte: se si utilizza .NET 3.5 probabilmente si dovrebbe smettere di usare Hashtable ecc. E iniziare invece a utilizzare le raccolte generiche. –
Per il tuo commento: forse basta chiamare .ToLowerInvariant() su tutte le tue chiavi, quindi. –
* graffia testa * Ma i tasti che si trovano nella Hashtable non sono ToLowered(). Cioè Mi viene data una tabella hash pre-compilata che viene istanziata/popolata in una DLL. e le chiavi in HT sono case-sensitive ... L'unico accesso che ho alla dll è tramite un getter/indexer in cui ho passato la chiave, quindi anche se ho toLowerInvarianted le mie chiavi all'esterno, esse non corrisponderebbero alle chiavi all'interno. –