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:
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!
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
.
Tags und Links .net c# cultureinfo indexof