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

// CompareOptionsを指定した比較
int r2 = String.Compare(hankaku, zenkaku, CultureInfo.CreateSpecificCulture("ja"), CompareOptions.IgnoreWidth); // 0
int r3 = String.Compare(hankaku, zenkaku, CultureInfo.CreateSpecificCulture("en"), CompareOptions.IgnoreWidth); // 0

CompareInfo compare = CompareInfo.GetCompareInfo("ja-JP");
int r4 = compare.Compare(hankaku, zenkaku, CompareOptions.IgnoreWidth); // 0

IndexOf()

指定の文字列が、最初に見つかった位置を得られます。

public virtual int IndexOf (
    string source,
    string value,
    System.Globalization.CompareOptions options
    );
string zenkaku = "ABC"; // 全角
string hankaku = "B"; // 半角

int index1 = zenkaku.IndexOf(hankaku); // -1

CompareInfo compare = CompareInfo.GetCompareInfo("ja-JP");
int index2 = compare.IndexOf(zenkaku, hankaku, 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から検索