エクスポート (0) 印刷
すべて展開
この記事は機械翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。 詳細情報
訳文
原文

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
型 : System.String
比較で使用する最初の文字列。
indexA
型 : System.Int32
strA 内の部分文字列の位置。
strB
型 : System.String
比較で使用する 2 番目の文字列。
indexB
型 : System.Int32
strB 内の部分文字列の位置。
length
型 : System.Int32
比較する各部分文字列の最大文字数。
ignoreCase
型 : System.Boolean
比較時に大文字と小文字の区別を無視する場合は true。それ以外の場合は false

戻り値

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

value

状態

0 より小さい値

strA 内の部分文字列が、strB 内の部分文字列より小さいです。

0

これらの部分文字列が等しいか、または length が 0 です。

0 を超える値

strA 内の部分文字列が strB 内の部分文字列より大きいです。

例外条件
ArgumentOutOfRangeException

indexAstrA.Length より大きい値です。

または

indexBstrB.Length より大きい。

または

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

または

indexA または indexBnull で、length が 0 より大きい値です。

比較する部分文字列は strAindexA が示す位置、および strBindexB が示す位置から開始されます。 indexA および indexB は、いずれも 0 から始まります。つまり、strA および strB の最初の文字の位置は 0 です。 1 つ目の部分文字列の長さは、strA から indexA を引いた後に 1 を足した値になります。 2 つ目の部分文字列の長さは、strB から indexB を引いた後に 1 を足した値になります。

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

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

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

Caution メモ注意

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

比較対象値の一方または両方を null にできます。 定義上、空文字列 ("") を含むすべての文字列は null 参照よりも大きく、また 2 つの null 参照は互いに等しくなります。

比較は、等しくない文字が検出されるか、両方の部分文字列すべてが比較された時点で終了します。 ただし、2 つの文字列の比較で、一方の文字列の末尾までは等しく、もう一方の文字列に残りの文字がある場合、もう一方の文字列の方が大きいと見なされます。 戻り値は、最後に実行された比較の結果です。

カルチャ固有の大文字/小文字の区別規則によって比較が影響される場合、予期しない結果が発生する可能性があります。 たとえば、トルコ語の場合、トルコ語のファイル システムは "file" の文字 ”i” に関して言語学的な大文字/小文字の区別規則を使用しないため、次の例では間違った結果が生成されます。


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) のメソッドを呼び出し、comparisonType パラメーターの CompareOptions.Ordinal または CompareOptions.OrdinalIgnoreCase の値を指定します。

大文字と小文字の表記だけが異なる 2 つの部分文字列を比較する 2 とおりの例を次に示します。 1 つ目の例では大文字と小文字の違いを無視して比較し、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

サポート対象 : 4.5.2、4.5.1、4.5、4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

サポート対象 : 4、3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (サーバー コア ロールはサポート対象外), Windows Server 2008 R2 (SP1 以降でサーバー コア ロールをサポート。Itanium はサポート対象外)

.NET Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

コミュニティの追加

追加
表示:
© 2014 Microsoft