Ignorieren von Akzent-Buchstaben in string-Vergleich
Ich brauche zum vergleichen von 2 strings in C# und Behandlung von akzentuierten Buchstaben die gleiche wie die nicht-akzentuierte Buchstaben. Zum Beispiel:
string s1 = "hello";
string s2 = "héllo";
s1.Equals(s2, StringComparison.InvariantCultureIgnoreCase);
s1.Equals(s2, StringComparison.OrdinalIgnoreCase);
Diese 2 Saiten müssen gleich sein (soweit meine Anwendung betrifft), aber diese beiden Aussagen zu false ausgewertet. Gibt es eine Möglichkeit in C#, dies zu tun?
InformationsquelleAutor der Frage Jon Tackabury | 2008-12-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
BEARBEITEN 2012-01-20: Oh boy! Die Lösung war so viel einfacher und wurde im Rahmen fast ewig. Wie bereits von knightpfhor :
Hier ist eine Funktion, die Streifen diakritischen Zeichen aus einem string:
Mehr details auf MichKap s blog (RIP...).
Das Prinzip ist, es dreht sich 'é' in 2 aufeinander folgenden chars 'e', akuten.
Sie iteriert dann über die chars und überspringt die diakritischen Zeichen.
"héllo" wird zu "er<akut>llo", die wiederum wird zu "Hallo".
Anmerkung: Hier ist ein kompakter .NET4+ freundliche version der gleichen Funktion:
InformationsquelleAutor der Antwort Serge Wautier
Wenn Sie nicht brauchen, konvertieren Sie die Zeichenfolge, und Sie wollen einfach nur, um zu überprüfen, für Gleichheit, die Sie verwenden können
oder wenn Sie wollen, den Vergleich auf groß-und Kleinschreibung sowie
InformationsquelleAutor der Antwort knightpfhor
Folgende Methode
CompareIgnoreAccents(...)
arbeitet an Ihrem Beispiel Daten. Hier ist der Artikel wo ich meine hintergrund-Informationen: http://www.codeproject.com/KB/cs/EncodingAccents.aspxIch denke, dass eine Erweiterung Methode wäre besser:
Dann der Einsatz wäre diese:
InformationsquelleAutor der Antwort Ryan Cook
Musste ich etwas ähnlich, aber mit eine StartsWith-Methode. Hier ist eine einfache Lösung, abgeleitet von @Serge - appTranslator.
Hier ist eine Erweiterung-Methode:
Sowie für Zwischenlagen-freaks 😉
Akzent incensitive und Fall incensitive startsWith genannt werden kann, wie dies
InformationsquelleAutor der Antwort Guish
Ein einfacher Weg, um entfernen Sie Akzente:
InformationsquelleAutor der Antwort Newton Carlos Dantas
versuchen, diese überladung der String.Compare-Methode.
String.Compare-Methode (String, String, Boolean, CultureInfo)
Es erzeugt ein int-Wert basiert auf den vergleichen-Operationen einschließlich der cultureinfo. das Beispiel in der Seite im Vergleich "Ändern" in der en-US und en-CZ. CH de-CZ ist ein einzelner "Buchstabe".
Beispiel aus dem link
deshalb für die mit Akzent Sprachen, die Sie brauchen, um die Kultur dann testen Sie die Zeichenfolgen basierend auf, dass.
http://msdn.microsoft.com/en-us/library/hyxc48dt.aspx
InformationsquelleAutor der Antwort