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中文網其他相關文章!