Heim > Backend-Entwicklung > C++ > Wie kann ich Strings in C# vergleichen, während ich akzentuale Charaktere ignoriere?

Wie kann ich Strings in C# vergleichen, während ich akzentuale Charaktere ignoriere?

Linda Hamilton
Freigeben: 2025-01-24 16:07:10
Original
493 Leute haben es durchsucht

How Can I Compare Strings in C# While Ignoring Accented Characters?

Wenn Sie die Zeichenfolge in C#vergleichen, ignorieren Sie den Akzentzeichen

In C#ist es schwieriger, die Zeichenfolge mit dem Stresscharakter zu verarbeiten. Betrachten Sie das folgende Beispiel:

Diese beiden Zeichenfolge sollten gleich sein, aber beide Anweisungen geben falsch zurück. Dies liegt daran, dass der Akzent auf den Brief als verschiedene Zeichen angesehen wird. Um dieses Problem zu lösen, können wir eine Technologie verwenden, die zusätzliche Symbole (oder verflochten) macht, bevor wir die Zeichenfolge vergleichen.

<code class="language-csharp">string s1 = "hello";
string s2 = "héllo";

s1.Equals(s2, StringComparison.InvariantCultureIgnoreCase);
s1.Equals(s2, StringComparison.OrdinalIgnoreCase);</code>
Nach dem Login kopieren
Entfernen Sie das zusätzliche Symbol

Folgendes ist eine Methode, um zusätzliche Symbole aus der Zeichenfolge zu entfernen:

Diese Methode standardisiert zuerst die Zeichenfolge in D -Formulare, die in mehrere Zeichen mit dem Zeichen mit Spannung aufgeteilt werden. Es iteriert diese Zeichen und filtert die nicht -intervalische Marke (dh die Spannung). Schließlich wird die verbleibenden Zeichen fortgesetzt, um eine Zeichenfolge ohne Stress zu bilden.

Um diese Methode zu verwenden, wenden Sie sie einfach auf zwei Zeichenfolge an, bevor Sie sie vergleichen. Zum Beispiel:
<code class="language-csharp">static string RemoveDiacritics(string text)
{
    // 将字符串规范化为 Unicode 规范化形式 D
    string formD = text.Normalize(NormalizationForm.FormD);

    // 创建一个 StringBuilder 来保存结果字符串
    StringBuilder sb = new StringBuilder();

    // 迭代规范化字符串中的字符
    foreach (char ch in formD)
    {
        // 检查字符是否不是非间隔标记
        UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(ch);
        if (uc != UnicodeCategory.NonSpacingMark)
        {
            // 将字符附加到 StringBuilder
            sb.Append(ch);
        }
    }

    // 将 StringBuilder 转换为字符串并将其规范化为 Unicode 规范化形式 C
    return sb.ToString().Normalize(NormalizationForm.FormC);
}</code>
Nach dem Login kopieren

Dies wird korrekt als wahr bewertet und denken, dass der Stress "e" in "Héllo" der Nicht -Stress "e" in "Hallo" entspricht.

Das obige ist der detaillierte Inhalt vonWie kann ich Strings in C# vergleichen, während ich akzentuale Charaktere ignoriere?. 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