>處理重點和c#字符串比較中的箱子
C#字符串比較可能會因重音字符和案例靈敏度而復雜。 本文演示瞭如何進行案例不敏感的比較,同時也忽略了變節標記(重音)。
。的重音特徵通常與非重音對應物的對待不同,導致比較不准確。 為了解決這個問題,我們可以在比較之前進行預處理字符串去除口音。 以下RemoveDiacritics
函數使用Unicode歸一化來實現這一目標:
<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>此函數將輸入字符串歸一化,然後通過其字符迭代,刪除任何非間隔標記(重音)。 結果是一個帶有口音的字符串。
>
現在,要執行對案例不敏感的比較忽略重音,只需在使用>之前將此功能應用於字符串:Equals
>
<code class="language-csharp">string s1 = "résumé"; string s2 = "resume"; bool areEqual = RemoveDiacritics(s1).Equals(RemoveDiacritics(s2), StringComparison.OrdinalIgnoreCase); // true</code>使用
>提供了對文化不敏感的案例不敏感的比較,從而確保了不同系統的一致結果。 這種方法可確保在進行案例不敏感的比較時,帶有和沒有口音的字符串被視為等效,從而提高了應用程序邏輯的準確性和魯棒性。 StringComparison.OrdinalIgnoreCase
>
以上是在忽略口音的同時,如何在C#中進行案例不敏感的字符串比較?的詳細內容。更多資訊請關注PHP中文網其他相關文章!