>处理重点和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>使用
>提供了对文化不敏感的案例不敏感的比较,从而确保了不同系统的一致结果。 这种方法可确保在进行案例不敏感的比较时,带有和没有重音的字符串被视为等效,从而提高了应用程序逻辑的准确性和鲁棒性。
以上是如何在 C# 中执行不区分大小写的字符串比较,同时忽略重音?的详细内容。更多信息请关注PHP中文网其他相关文章!