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>
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>
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!