Heim > Backend-Entwicklung > C++ > Wie kann ich in C# Zeichenfolgenvergleiche ohne Berücksichtigung der Groß- und Kleinschreibung durchführen und dabei Akzente ignorieren?

Wie kann ich in C# Zeichenfolgenvergleiche ohne Berücksichtigung der Groß- und Kleinschreibung durchführen und dabei Akzente ignorieren?

Linda Hamilton
Freigeben: 2025-01-24 15:56:10
Original
794 Leute haben es durchsucht

How Can I Perform Case-Insensitive String Comparisons in C# While Ignoring Accents?

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>
Nach dem Login kopieren

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:

verwenden
<code class="language-csharp">string s1 = "résumé";
string s2 = "resume";

bool areEqual = RemoveDiacritics(s1).Equals(RemoveDiacritics(s2), StringComparison.OrdinalIgnoreCase); // true</code>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage