この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

String.Compare メソッド (String, Int32, String, Int32, Int32, Boolean)

 

指定した 2 つの String オブジェクトの部分文字列を比較し、並べ替え順序におけるそれらの相対位置を示す整数を返します。比較時に、大文字と小文字を区別するかどうかを設定できます。

名前空間:   System
アセンブリ:  mscorlib (mscorlib.dll 内)

public static int Compare(
	string strA,
	int indexA,
	string strB,
	int indexB,
	int length,
	bool ignoreCase
)

パラメーター

strA
Type: System.String

比較で使用する最初の文字列。

indexA
Type: System.Int32

strA 内の部分文字列の位置。

strB
Type: System.String

比較で使用する 2 番目の文字列。

indexB
Type: System.Int32

strB 内の部分文字列の位置。

length
Type: System.Int32

比較する各部分文字列の最大文字数。

ignoreCase
Type: System.Boolean

比較時に大文字と小文字の区別を無視する場合は true。それ以外の場合は false

戻り値

Type: System.Int32

2 つの比較対照値の構文上の関係を示す 32 ビット符号付き整数。

状態

0 より小さい値

strA 内の部分文字列は strB 内の部分文字列に並べ替え順序において先行します。

0

部分文字列は並べ替え順序で同じ位置で発生するか、length はゼロです。

0 より大きい値

strA 内の部分文字列は strB 内の部分文字列に並べ替え順序において後続します。

Exception Condition
ArgumentOutOfRangeException

indexAstrA.Length より大きくなっています。

または

indexBstrB.Length より大きいです。

または

indexAindexB、または length が負の値です。

または

indexA または indexB のいずれかが null であり、length が 0 より大きいです。

比較する部分文字列を起動strAindexA、し、strBindexBです。 両方indexAindexBは 0 から始まるです。 つまり、最初の文字strAstrB位置 0 です。 最初の部分文字列の長さがの長さと等しいstrAマイナスindexA1 を加算します。 2 番目の部分文字列の長さがの長さと等しいstrBマイナスindexB1 を加算します。

比較する文字の数が 2 つの部分文字列の長さの小さい方とlengthです。 indexAindexB、およびlengthパラメーターは、負以外である必要があります。

比較では、大文字小文字の規則や個別の文字のアルファベット順などのカルチャに固有の情報を取得するのに現在のカルチャを使用します。 たとえば、カルチャでは、文字の並べ替え順が前または後の文字に依存すること、または特定の文字の組み合わせが、1 文字として扱うことも、大文字と小文字の文字が特定の方法で比較することを指定できます。

単語の並べ替え規則を使用して、比較が実行されます。 Word、文字列、および序数の並べ替えの詳細については、次を参照してください。System.Globalization.CompareOptionsです。

System_CAPS_warning警告

文字列を比較するときに呼び出す必要があります、Compare(String, Int32, String, Int32, Int32, StringComparison)メソッドで、メソッドを使用する文字列比較の種類を明示的に指定することが必要です。 詳細については、「.NET Framework で文字列を使用するためのベスト プラクティス」を参照してください。

比較対象値の 1 つまたは両方を指定できますnullです。 定義上、任意の文字列を含む空の文字列 ("")、比較に null 参照ですより大きい。2 つの null 参照が互いに等しいと比較します。

非等値が検出されるか、両方の部分文字列を比較したときに、比較が終了します。 ただし、2 つの文字列の比較で 1 つの文字列の末尾に等しく、残りの文字があるその他の文字列、に残りの文字の文字列が大きいと見なされます。 戻り値は、最後に実行される比較の結果です。

予期しない結果は、比較がカルチャに固有の大文字と小文字の規則によって影響を受けるときに発生します。 たとえば、トルコ語では次の例間違った結果が生成トルコ語で、ファイル システムでは、文字"i"の言語の文字種の規則が使用されないため"file"にします。

static bool IsFileURI(String path)
{
    return (String.Compare(path, 0, "file:", 0, 5, true) == 0);
}

パス名は、ロケールに依存しない方法で比較する必要があります。 これを行う正しいコードは次のとおりです。

static bool IsFileURI(String path)
{
    return (String.Compare(path, 0, "file:", 0, 5, StringComparison.OrdinalIgnoreCase) == 0);
}

呼び出し時の注意:

文字セットには無視できる文字が含まれています。 Compare(String, Int32, String, Int32, Int32, Boolean)言語またはカルチャに依存した比較を実行するときに、メソッドでこれらの文字が考慮されません。 比較で無視できる文字を認識するように呼び出す、Compare(String, Int32, String, Int32, Int32, StringComparison)メソッドの値を指定CompareOptions.OrdinalまたはCompareOptions.OrdinalIgnoreCase用、comparisonTypeパラメーター。

次の例では、場合だけが異なる 2 つの部分文字列を比較する 2 を実行します。 最初の比較と小文字を無視し、2 つ目の比較では大文字です。

// Sample for String.Compare(String, Int32, String, Int32, Int32, Boolean)
using System;

class Sample {
    public static void Main() {
//                 0123456
    String str1 = "MACHINE";
    String str2 = "machine";
    String str;
    int result;

    Console.WriteLine();
    Console.WriteLine("str1 = '{0}', str2 = '{1}'", str1, str2);
    Console.WriteLine("Ignore case:");
    result = String.Compare(str1, 2, str2, 2, 2, true);
    str = ((result < 0) ? "less than" : ((result > 0) ? "greater than" : "equal to"));
    Console.Write("Substring '{0}' in '{1}' is ", str1.Substring(2, 2), str1);
    Console.Write("{0} ", str);
    Console.WriteLine("substring '{0}' in '{1}'.", str2.Substring(2, 2), str2);

    Console.WriteLine();
    Console.WriteLine("Honor case:");
    result = String.Compare(str1, 2, str2, 2, 2, false);
    str = ((result < 0) ? "less than" : ((result > 0) ? "greater than" : "equal to"));
    Console.Write("Substring '{0}' in '{1}' is ", str1.Substring(2, 2), str1);
    Console.Write("{0} ", str);
    Console.WriteLine("substring '{0}' in '{1}'.", str2.Substring(2, 2), str2);
    }
}
/*
This example produces the following results:

str1 = 'MACHINE', str2 = 'machine'
Ignore case:
Substring 'CH' in 'MACHINE' is equal to substring 'ch' in 'machine'.

Honor case:
Substring 'CH' in 'MACHINE' is greater than substring 'ch' in 'machine'.
*/

.NET Framework
1.1 以降で使用可能
トップに戻る
表示: