C# 中不区分大小写的字符串比较忽略重音
C# 字符串比较通常需要忽略大小写和重音符号。 StringComparison.InvariantCultureIgnoreCase
或 StringComparison.OrdinalIgnoreCase
等标准选项无法正确处理重音字符。 这就需要一个定制的解决方案来进行准确的比较。
删除变音符号(重音)
以下函数可以有效地从字符串中删除变音符号:
<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>
此功能:
NormalizationForm.FormD
,分隔基本字符和变音符号。NormalizationForm.FormC
进行最终清理。实现不区分大小写的比较
要在忽略大小写和重音的情况下比较字符串,请在比较之前使用 RemoveAccents
和 ToLowerInvariant()
:
<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>
这确保了稳健的比较,将“Hello”和“Hello”视为相同。 此方法为 C# 中大小写和不区分重音的字符串比较提供了灵活且准确的解决方案。
以上是如何在 C# 中执行不区分大小写的字符串比较,同时忽略重音字符?的详细内容。更多信息请关注PHP中文网其他相关文章!