CompareInfo クラス

インスタンスの取得

CultureInfoクラスのCompareInfoプロパティから取得できます。

CompareInfo compare = CultureInfo.CurrentCulture.CompareInfo;

GetCompareInfo()

カルチャを指定してCompareInfoを取得できます。

public static System.Globalization.CompareInfo GetCompareInfo (
    string name // カルチャ名
    );
GetCompareInfo(String) - CompareInfo.GetCompareInfo メソッド (System.Globalization) | Microsoft Learn

メソッド

メソッド 機能
Compare(String, String, CompareOptions) 指定の文字列の、構文上の前後関係を得られる
IndexOf(String, String, CompareOptions) 指定の文字列が最初に見つかった位置を得られる
LastIndexOf(String, String, CompareOptions) 指定の文字列が最後に見つかった位置を得られる
IsPrefix(String, String, CompareOptions) 指定の文字列で始まるかどうか
IsSuffix(String, String, CompareOptions) 指定の文字列で終わるかどうか
   

Compare()

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

IndexOf()

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

CompareOptions 列挙型

列挙子 内容
None 0 既定の設定
IgnoreCase 1 大文字と小文字の区別を無視する
IgnoreNonSpace 2 発音区別符など、非スペーシング組み合わせ文字を無視する
IgnoreSymbols 4 空白文字、句読点、通貨記号、パーセント記号、算術記号、アンパサンドなどの記号を無視する
IgnoreKanaType 8 カナ型を無視する。ひらがなとカタカナを区別しない
IgnoreWidth 16 半角と全角の区別を無視する
OrdinalIgnoreCase 268435456 文字列の比較で、大文字と小文字の違いを無視する
StringSort 536870912 文字列の比較時に、文字列での並べ替えアルゴリズムを使用する

(文字列での並べ替えでは、ハイフン、アポストロフィ、およびその他の英数字以外の記号が英数字よりも前に来る)

Ordinal 107374182 Unicode UTF-16 でエンコードされた連続する文字列の値 (コード単位比較に基づくコード単位) を使用して、文字列を比較する

(この比較は高速だが、カルチャに応じた処理は行われない。この値は他とは組み合わせず単独で使用する)

CompareOptions 列挙型 (System.Globalization) | Microsoft Learn
Microsoft Learnから検索