CultureInfoクラスのCompareInfoプロパティから取得できます。
CompareInfo compare = CultureInfo.CurrentCulture.CompareInfo;
public static System.Globalization.CompareInfo GetCompareInfo (string name);GetCompareInfo(String) - CompareInfo.GetCompareInfo メソッド (System.Globalization) | Microsoft Learn
public virtual int Compare ( string string1, string string2, System.Globalization.CompareOptions options );Compare(String, String, CompareOptions) - CompareInfo.Compare メソッド (System.Globalization) | Microsoft Learn
string hankaku = "A"; string zenkaku = "A"; // CompareOptionsを指定しない、通常の比較 int r1 = String.Compare(hankaku, zenkaku); // -1 CompareInfo compare = CompareInfo.GetCompareInfo("ja-JP"); int r2 = compare.Compare(hankaku, zenkaku, CompareOptions.IgnoreWidth); // 0 // String.Compare()による比較 int r3 = String.Compare(hankaku, zenkaku, CultureInfo.CreateSpecificCulture("ja"), CompareOptions.IgnoreWidth); // 0 int r4 = String.Compare(hankaku, zenkaku, CultureInfo.CreateSpecificCulture("en"), CompareOptions.IgnoreWidth); // 0
public virtual int IndexOf ( string source, string value, System.Globalization.CompareOptions options );
string source = "ABC"; // 全角 string value = "B"; // 半角 int index1 = source.IndexOf(value); // -1 CompareInfo compare = CompareInfo.GetCompareInfo("ja-JP"); int index2 = compare.IndexOf(source, value, CompareOptions.IgnoreWidth); // 1
列挙子 | 値 | 内容 |
---|---|---|
None | 0 | 既定の設定 |
IgnoreCase | 1 | 大文字と小文字の区別を無視する |
IgnoreNonSpace | 2 | 発音区別符など、非スペーシング組み合わせ文字を無視する |
IgnoreSymbols | 4 | 空白文字、句読点、通貨記号、パーセント記号、算術記号、アンパサンドなどの記号を無視する |
IgnoreKanaType | 8 | カナ型を無視する。ひらがなとカタカナを区別しない |
IgnoreWidth | 16 | 半角と全角の区別を無視する |
OrdinalIgnoreCase | 268435456 | 大文字と小文字の違いを無視する |
StringSort | 536870912 | 文字列の比較時に、文字列での並べ替えアルゴリズムを使用する
(文字列での並べ替えでは、ハイフン、アポストロフィ、およびその他の英数字以外の記号が英数字よりも前に来る) |
Ordinal | 107374182 | Unicode UTF-16 でエンコードされた連続する文字列の値 (コード単位比較に基づくコード単位) を使用して、文字列を比較する
(この比較は高速だが、カルチャに応じた処理は行われない。この値は他とは組み合わせず単独で使用する) |