Heim > Backend-Entwicklung > C++ > Wie kann ich Fall-unempfindliche String-Vergleiche in C# durchführen, während ich akzentuale Zeichen ignoriert?

Wie kann ich Fall-unempfindliche String-Vergleiche in C# durchführen, während ich akzentuale Zeichen ignoriert?

DDD
Freigeben: 2025-01-24 15:51:12
Original
307 Leute haben es durchsucht

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

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)

entfernen

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

Diese Funktion:

  1. Normalisiert: konvertiert die Eingangszeichenfolge in NormalizationForm.FormD, wobei die Basiszeichen und Diakritik getrennt werden.
  2. Filter: iteriert die Zeichen und beiträgt nur diejenigen an, die keine Nicht-Abstandsmarken (Akzente) haben.
  3. normiert sich neu an: gilt 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>
Nach dem Login kopieren

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage