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
Lepaskan: 2025-01-24 15:56:10
asal
794 orang telah melayarinya

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>
Salin selepas log masuk
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>
Salin selepas log masuk
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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan