Groß- / Kleinschreibung in Wörterbuchschlüsseln ignorieren

8

Wie kann man Groß- / Kleinschreibung in Wörterbuchschlüsseln ignorieren? Ich mache das:

%Vor%

Und ich habe bereits versucht, StringComparer.InvariantIgnoreCase zu verwenden, und das Ergebnis ist das gleiche. Es kann den Buchstaben "E" nicht in Großbuchstaben finden.

BEARBEITEN: Könnte ich auch mit OrdinalIgnoreCase eine Art von Kulturkonflikten mit meinen Umgebungseinstellungen haben?

    
Luciano 18.09.2012, 23:30
quelle

3 Antworten

3

Ich habe es in anderen Maschinen getestet, die ich habe (4 VMs und 1 real) und festgestellt, dass nur in meiner aktuellen VM (Win7 x64, us_eng, einige portugiesische Einstellungen, .net 4.5) das Problem auftritt. In meiner echten Maschine und anderen VMs funktioniert der Test gut, mit OrdinalIgnoreCase und InvariantIgnoreCase.

Also, ich denke, dass etwas sehr Seltsames in dieser Umgebung ist, aber ich kann jetzt keine Zeit darauf verwenden, es zu untersuchen.

Leider wurde die Frage von einigen Leuten als nutzlos markiert, was mein Interesse, es tief zu untersuchen, demotiviert.

    
Luciano 20.09.2012, 21:02
quelle
4

StringComparer.OrdinalIgnoreCase verwendet einen internen Aufruf der Window API "nativeCompareOrdinalIgnoreCase" -Funktion in System.Globalization.TextInfo; also ist es nicht Invariante Kultur. Schade, die Funktion in mscorlib.dll ist intern, wir können es nicht testen.

Jedenfalls sollten Sie StringComparer.InvariantCultureIgnoreCase anstelle des vorherigen verwenden.

Falls es immer noch nicht funktioniert, können Sie den IEqualityComparer

erneut implementieren %Vor%

Verwendung:

%Vor%     
Hiệp Lê 27.12.2013 17:22
quelle
0

Sie stimmen mit der Deklaration für Dictionary für Groß- und Kleinschreibung von Groß- und Kleinschreibung nicht überein.

Sie können auch map.ContainsKey("E") und map["E"] verwenden, um nach einem Schlüssel zu suchen und darauf zuzugreifen.

    
Gerhard Powell 18.09.2012 23:33
quelle

Tags und Links