Fall-inemsitiver Zeichenfolge Vergleich in C# ignorieren Akzente
c# String -Vergleiche erfordern häufig die ignorierten Fall- und Akzentmarken. Standardoptionen wie StringComparison.InvariantCultureIgnoreCase
oder StringComparison.OrdinalIgnoreCase
können Akzentzeichen nicht angemessen behandeln. Dies erfordert eine benutzerdefinierte Lösung für genaue Vergleiche.
Diakritik (Akzente)
entfernenDie folgende Funktion entfernt effizient Diakritik aus Zeichenfolgen:
<code class="language-csharp">static string RemoveAccents(string text) { string normalized = text.Normalize(NormalizationForm.FormD); StringBuilder sb = new StringBuilder(); foreach (char c in normalized) { if (CharUnicodeInfo.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark) { sb.Append(c); } } return sb.ToString().Normalize(NormalizationForm.FormC); }</code>
Diese Funktion:
NormalizationForm.FormD
, wobei die Basiszeichen und Diakritik getrennt werden. NormalizationForm.FormC
für die endgültige Reinigung. Implementierung von Fall-unempfindlicher Vergleich
Um Strings zu vergleichen, während Sie Fall und Akzente ignorieren, verwenden Sie RemoveAccents
und ToLowerInvariant()
vor dem Vergleich:
<code class="language-csharp">string str1 = "Héllo"; string str2 = "Hello"; if (RemoveAccents(str1).ToLowerInvariant() == RemoveAccents(str2).ToLowerInvariant()) { // Strings are equal (ignoring case and accents) }</code>
Dies gewährleistet einen robusten Vergleich, der "Héllo" und "Hallo" als identisch behandelt. Diese Methode liefert eine flexible und genaue Lösung für Fall- und Akzent-unempfindliche String-Vergleiche in C#.
Das obige ist der detaillierte Inhalt vonWie kann ich Fall-unempfindliche String-Vergleiche in C# durchführen, während ich akzentuale Zeichen ignoriert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!