Umgang mit Akzenten und Groß-/Kleinschreibung in C#-String-Vergleichen
C#-String-Vergleiche können durch Akzentzeichen und Groß-/Kleinschreibung erschwert werden. In diesem Artikel wird gezeigt, wie Sie Vergleiche ohne Berücksichtigung der Groß- und Kleinschreibung durchführen und gleichzeitig diakritische Zeichen (Akzente) ignorieren.
Zeichen mit Akzent werden oft anders behandelt als ihre Gegenstücke ohne Akzent, was zu ungenauen Vergleichen führt. Um dieses Problem zu beheben, können wir Zeichenfolgen vorverarbeiten, um Akzente vor dem Vergleich zu entfernen. Die folgende RemoveDiacritics
-Funktion verwendet Unicode-Normalisierung, um dies zu erreichen:
<code class="language-csharp">static string RemoveDiacritics(string text) { string formD = text.Normalize(NormalizationForm.FormD); StringBuilder sb = new StringBuilder(); foreach (char ch in formD) { UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(ch); if (uc != UnicodeCategory.NonSpacingMark) { sb.Append(ch); } } return sb.ToString().Normalize(NormalizationForm.FormC); }</code>
Diese Funktion normalisiert die Eingabezeichenfolge und durchläuft dann ihre Zeichen, wobei alle Nicht-Leerzeichen (Akzente) entfernt werden. Das Ergebnis ist eine Zeichenfolge ohne Akzente.
Um nun einen Vergleich ohne Berücksichtigung der Groß- und Kleinschreibung durchzuführen und Akzente zu ignorieren, wenden Sie diese Funktion einfach auf Ihre Zeichenfolgen an, bevor Sie Equals
:
<code class="language-csharp">string s1 = "résumé"; string s2 = "resume"; bool areEqual = RemoveDiacritics(s1).Equals(RemoveDiacritics(s2), StringComparison.OrdinalIgnoreCase); // true</code>
Die Verwendung von StringComparison.OrdinalIgnoreCase
ermöglicht einen kulturunabhängigen Vergleich ohne Berücksichtigung der Groß- und Kleinschreibung und stellt so konsistente Ergebnisse über verschiedene Systeme hinweg sicher. Dieser Ansatz stellt sicher, dass Zeichenfolgen mit und ohne Akzente bei Vergleichen ohne Berücksichtigung der Groß- und Kleinschreibung als gleichwertig behandelt werden, wodurch die Genauigkeit und Robustheit Ihrer Anwendungslogik verbessert wird.
Das obige ist der detaillierte Inhalt vonWie kann ich in C# Zeichenfolgenvergleiche ohne Berücksichtigung der Groß- und Kleinschreibung durchführen und dabei Akzente ignorieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!