首頁 >後端開發 >C++ >在忽略口音的同時,如何在C#中進行案例不敏感的字符串比較?

在忽略口音的同時,如何在C#中進行案例不敏感的字符串比較?

Linda Hamilton
Linda Hamilton原創
2025-01-24 15:56:10839瀏覽

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

>處理重點和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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn