Perbandingan Rentetan Tidak Peka Huruf dalam C# Mengabaikan Aksen
Perbandingan rentetan C# selalunya memerlukan mengabaikan kedua-dua tanda huruf besar dan aksen. Pilihan standard seperti StringComparison.InvariantCultureIgnoreCase
atau StringComparison.OrdinalIgnoreCase
tidak mengendalikan aksara beraksen dengan sewajarnya. Ini memerlukan penyelesaian tersuai untuk perbandingan yang tepat.
Mengalih Keluar Diakritik (Aksen)
Fungsi berikut dengan cekap membuang diakritik daripada rentetan:
<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>
Fungsi ini:
NormalizationForm.FormD
, memisahkan aksara asas dan diakritik.NormalizationForm.FormC
untuk pembersihan akhir.Melaksanakan Perbandingan Kes-Tidak Peka
Untuk membandingkan rentetan sambil mengabaikan huruf besar dan aksen, gunakan RemoveAccents
dan ToLowerInvariant()
sebelum perbandingan:
<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>
Ini memastikan perbandingan yang mantap yang menganggap "Héllo" dan "Hello" sebagai sama. Kaedah ini menyediakan penyelesaian yang fleksibel dan tepat untuk perbandingan rentetan huruf besar dan tidak sensitif aksen dalam C#.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melakukan Perbandingan Rentetan Tidak Peka Huruf dalam C# Semasa Mengabaikan Aksara Beraksen?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!