ホームページ > バックエンド開発 > C++ > アクセントされた文字を無視しながら、C#でCase-ofsensensitive String比較を実行するにはどうすればよいですか?

アクセントされた文字を無視しながら、C#でCase-ofsensensitive String比較を実行するにはどうすればよいですか?

DDD
リリース: 2025-01-24 15:51:12
オリジナル
307 人が閲覧しました

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

アクセントを無視する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>
ログイン後にコピー
に変換し、ベース文字とダイアティックスを分離します。

フィルター:
    キャラクターを繰り返し、間隔でないマーク(アクセント)ではないもののみを追加します。
  1. 再正規化:最終的なクリーンアップにNormalizationForm.FormDを適用します。
  2. ケース非感受性比較の実装
  3. ケースとアクセントを無視しながら文字列を比較するには、比較前にNormalizationForm.FormCを使用してください:
これにより、「héllo」と「hello」を同一と扱う堅牢な比較が保証されます。 この方法は、C#。

以上がアクセントされた文字を無視しながら、C#でCase-ofsensensitive String比較を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート