Seltsame Ergebnisse von IndexOf auf Deutsch string

9

Ich habe String "Ärger, -Ökonom-i-Übermut-ẞ-ß" und wenn ich IndexOf ("-") starte bekomme ich ein Ergebnis von 23. Wenn ich Replace auf der gleichen Zeichenfolge verwende, wird nichts ersetzt .

Ich verstehe nicht, was passiert, kann also jemand bitte etwas Licht in dieses Thema bringen? Application Culture ist auf Kroatisch eingestellt, es ist nicht Deutsch, und die Framework-Version ist 3.5.

Das Ändern der Kultur auf Deutsch (de-DE) ändert dieses seltsame Verhalten nicht.

Hier ist der Screenshot vom Debugger:

    
Antonio Bakula 13.02.2012, 12:40
quelle

2 Antworten

3

Da Herr Lister seine wohlverdienten Upvotes nicht will, werde ich hier seinen Kommentar einfügen und die Antwort akzeptieren.

  

Ich fürchte, dass U + 1E9E nach .NET 3.5 undefiniert ist, weil   Dieses Zeichen war in Unicode 4.0 (oder einer anderen Version von   Unicode .NET 3.5 verwendet). Es ist eine ziemlich neue Ergänzung (Großbuchstaben Version)   von deutschem ß). Also ignoriert die IndexOf-Funktion es. Wenn Sie welche haben   Kontrolle über den Text, können Sie das Zeichen in ß oder SS ändern,   was auch immer passender ist. Natürlich ist die bessere Lösung, um   upgraden Sie .NET auf v4.0!

    
Antonio Bakula 30.04.2012, 12:05
quelle
1

IndexOf verwendet die aktuelle Kultur, wenn Sie nicht anders angeben:

  

Diese Methode führt ein Wort aus (Groß- / Kleinschreibung und kultursensitiv)   Suche mit der aktuellen Kultur.

Replace verwendet einen ordinalen Vergleich:

  

Diese Methode führt eine Ordinalzahl aus (Groß- / Kleinschreibung und   kulturunabhängig) suche nach oldValue .

    
LukeH 13.02.2012 13:11
quelle

Tags und Links