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

String.Compare メソッド (String, Int32, String, Int32, Int32, CultureInfo, CompareOptions)

指定した 2 つの String オブジェクトの部分文字列を比較し、2 つの部分文字列の互いのリレーションシップを並べ替え順序で示す整数を返します。比較時に、指定した比較オプションと、比較に影響を及ぼすカルチャ固有の情報を使用します。

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

public static int Compare(
	string strA,
	int indexA,
	string strB,
	int indexB,
	int length,
	CultureInfo culture,
	CompareOptions options
)

パラメーター

strA
型 : System.String
比較で使用する最初の文字列。
indexA
型 : System.Int32
strA における部分文字列の開始位置。
strB
型 : System.String
比較で使用する 2 番目の文字列。
indexB
型 : System.Int32
strB における部分文字列の開始位置。
length
型 : System.Int32
比較する各部分文字列の最大文字数。
culture
型 : System.Globalization.CultureInfo
カルチャ固有の比較情報を提供するオブジェクト。
options
型 : System.Globalization.CompareOptions
比較の実行時に使用するオプション (大文字と小文字の違いや記号を無視するなど)。

戻り値

型 : System.Int32
2 つの部分文字列の構文上の関係を示す整数。次の表を参照してください。

value

状態

0 より小さい値

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

0

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

0 を超える値

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

例外条件
ArgumentException

optionsCompareOptions 値ではありません。

ArgumentOutOfRangeException

indexAstrA.Length より大きい。

または

indexBstrB.Length より大きい。

または

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

または

strA または strBnull で、length が 0 を超える値です。

ArgumentNullException

culturenull なので、

比較する部分文字列は strAindexA が示す位置、および strBindexB が示す位置から開始されます。 第 1 部分文字列の長さは、strA の長さから indexA を引いた値です。 第 2 部分文字列の長さは、strB の長さから indexB を引いた値です。

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

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

Caution メモ注意

Compare(String, Int32, String, Int32, Int32, CultureInfo, CompareOptions) メソッドは、主にアルファベット順の並べ替え操作に使用するようにデザインされています。 このメソッド呼び出しは、2 つの部分文字列が等価かどうかを判断するため (つまり、戻り値がゼロかどうかをテストするため) に使用しないでください。 2 つの文字列が等価かどうかを判断するには、Equals メソッドを呼び出してください。

strA および strB の一方または両方を null にできます。 定義上、String.Empty を含むすべての文字列は null 参照よりも大きく、また 2 つの null 参照は互いに等しくなります。

この比較は、System.Globalization.CompareOptions 列挙体の 1 つ以上のメンバーで構成される options パラメーターによりさらに詳細に指定できます。 ただし、これはカルチャに依存した文字列比較を実行するためのメソッドのため、CompareOptions.Ordinal 値および CompareOptions.OrdinalIgnoreCase 値は無効です。

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

呼び出し時の注意

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

Compare(String, Int32, String, Int32, Int32, CultureInfo, CompareOptions) メソッドを使用して、2 人の姓を比較する例を次に示します。 姓をアルファベット順に表示します。


using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string name1 = "Jack Smith";
      string name2 = "John Doe";

      // Get position of space character.
      int index1 = name1.IndexOf(" ");
      index1 = index1 < 0 ? 0 : index1--;

      int index2 = name2.IndexOf(" ");
      index1 = index1 < 0 ? 0 : index1--;

      int length = Math.Max(name1.Length, name2.Length);

      Console.WriteLine("Sorted alphabetically by last name:");
      if (String.Compare(name1, index1, name2, index2, length, 
                         new CultureInfo("en-US"), CompareOptions.IgnoreCase) < 0)
         Console.WriteLine("{0}\n{1}", name1, name2); 
      else
         Console.WriteLine("{0}\n{1}", name2, name1); 
   }
}
// The example displays the following output:
//       Sorted alphabetically by last name:
//       John Doe
//       Jack Smith


.NET Framework

サポート対象 : 4.5.2、4.5.1、4.5、4、3.5 SP1、3.0 SP2、2.0 SP2

.NET Framework Client Profile

サポート対象 : 4、3.5 SP1

Windows Phone アプリ用 .NET

サポート対象 : Windows Phone 8、Silverlight 8.1

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