Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melakukan Perbandingan Rentetan Tidak Peka Huruf dalam C# Semasa Mengabaikan Aksen?

Bagaimanakah Saya Boleh Melakukan Perbandingan Rentetan Tidak Peka Huruf dalam C# Semasa Mengabaikan Aksen?

Linda Hamilton
Linda Hamiltonasal
2025-01-24 15:56:10836semak imbas

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

mengendalikan aksen dan kes dalam perbandingan rentetan c#

C# perbandingan rentetan boleh rumit oleh aksara beraksen dan kepekaan kes. Artikel ini menunjukkan bagaimana untuk melakukan perbandingan kes-insensitif sementara juga mengabaikan tanda diakritik (aksen).

Watak beraksen sering dirawat secara berbeza daripada rakan-rakan mereka yang tidak beraksen, yang membawa kepada perbandingan yang tidak tepat. Untuk menangani ini, kita boleh membuat pra -proses untuk mengeluarkan aksen sebelum perbandingan. Fungsi

berikut menggunakan normalisasi unicode untuk mencapai ini: RemoveDiacritics

<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>
Fungsi ini menormalkan rentetan input dan kemudian melangkah melalui aksara, mengeluarkan sebarang tanda bukan jarak (aksen). Hasilnya adalah rentetan dengan aksen yang dikeluarkan.

Sekarang, untuk melakukan perbandingan kes-insensitif yang mengabaikan aksen, hanya gunakan fungsi ini untuk rentetan anda sebelum menggunakan

: Equals

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

bool areEqual = RemoveDiacritics(s1).Equals(RemoveDiacritics(s2), StringComparison.OrdinalIgnoreCase); // true</code>
Menggunakan

menyediakan perbandingan kes-insensitif yang tidak sensitif, memastikan hasil yang konsisten merentasi sistem yang berbeza. Pendekatan ini memastikan bahawa rentetan dengan dan tanpa aksen dianggap sebagai setara apabila melakukan perbandingan kes-insensitif, meningkatkan ketepatan dan keteguhan logik aplikasi anda. StringComparison.OrdinalIgnoreCase

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melakukan Perbandingan Rentetan Tidak Peka Huruf dalam C# Semasa Mengabaikan Aksen?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn