Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

C# | 全角半角大文字小文字無視で文字列比較を行う

概要

全角半角大文字小文字無視で文字列比較を行う

詳細

CompareInfoのindexOfメソッドに任意のCompareOptionsを指定することで
比較条件を変更できます。
複数のCompareOptionsを指定する場合は「|」で利用します。

CompareOptions 内容
IgnoreCase 文字列比較で大文字と小文字の区別を無視することを示します。
IgnoreKanaType 文字列比較でカナ型を無視することを示します。
カナ型とは、日本語の発音を表すひらがなとカタカナの文字を指します。
ひらがなは、本来の日本語の表現と単語に使用し、カタカナは "コンピュータ" または "インターネット" などの外来語に使用します。
発音は、ひらがなとカタカナのどちらでも表現できます。
この値が選択されている場合、ある発音を示すひらがなは、同じ発音を示すカタカナと同一であると見なされます。
IgnoreNonSpace 文字列比較で、発音区別符など、非スペーシング組み合わせ文字を無視するように指定します。
Unicode 標準は、基本文字を組み合わせて生成される新しい文字を組み合わせ文字として定義しています。
非スペーシング組み合わせ文字は、表示されるときに文字間隔用の領域は確保しません。
非スペーシング組み合わせ文字の詳細については、http://www.unicode.org の「The Unicode Standard」を参照してください。
IgnoreSymbols 文字列比較において、空白文字、句読点、通貨記号、パーセント記号、算術記号、アンパサンドなどの記号を無視することを示します。
IgnoreWidth 文字列比較において、半角と全角の区別を無視することを示します。
たとえば、日本語のカタカナ文字は、全角または半角で記述できます。
この値を選択した場合、全角で記述されたカタカナ文字は、半角で記述されたカタカナ文字と同一であると見なされます。
None 文字列比較の既定のオプション設定を示します。
Ordinal 各文字の Unicode 値を使用して、文字列を比較することを示します。
この比較は処理速度は速いですが、カルチャに応じた処理は行いません。
xxxx が yyyy よりも小さい場合、"U+xxxx" で始まる文字列は "U+yyyy" で始まる文字列よりも前になります。
このフラグを他のフラグと組み合わせることはできません。
このフラグは、単独で使用してください。
OrdinalIgnoreCase 文字列の比較で大文字と小文字の違いを無視するように指定し、通常の比較を実行します。
これは、インバリアント カルチャを使用して文字列を大文字に変換した後、その結果に対して通常の比較を実行する操作と同じです。
StringSort 文字列の比較時に、ハイフン、アポストロフィ、およびその他の英数字以外の記号が英数字よりも前になる文字列並べ替えアルゴリズムを使用することを示します。
サンプルコード
class StringUtils
{
  public static string ContainsIgnoreCaseWidth(string value, string compare)
  {
    if (value == null) {
      return false;
    }

    System.Globalization.CompareInfo ci = System.Globalization.CultureInfo.CurrentCulture.CompareInfo;
    if (ci.IndexOf(value, compare, System.Globalization.CompareOptions.IgnoreWidth | System.Globalization.CompareOptions.IgnoreCase) >= 0)
    {
      return true;
    }
    else
    {
      return false;
    }
  }
}