このトピックはまだ評価されていません - このトピックを評価する

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

2013/12/12

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

Namespace:  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
第 1 文字列。
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 つの部分文字列の構文上の関係を示す整数。

Condition

ゼロより小

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

ゼロ

これらの部分文字列が等しいか、または length が 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 つの文字として扱う特定の文字の組み合わせ、大文字と小文字を特定の方法で比較するかどうか、前後の文字に基づいた文字の並べ替えの基準などが規定されている可能性があります。

注意注意:

Compare(String, Int32, String, Int32, Int32, CultureInfo, CompareOptions) メソッドは、主にアルファベット順などでの並べ替え操作に使用するために設計されています。2 つの部分文字列が等しいかどうかを判断すること目的である場合 (つまり、メソッド呼び出しの目的が戻り値が 0 であるかどうかを確認することである場合) は、使用しないでください。2 つの文字列が等しいかどうかを判断するには、Equals メソッドを呼び出してください。

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

この比較は、CompareOptions 列挙体の 1 つ以上のメンバーで構成される options パラメーターによりさらに詳細に指定できます。ただし、このメソッドの目的は、カルチャを考慮した文字列比較の実行であるため、CompareOptions.Ordinal 値および CompareOptions.OrdinalIgnoreCase 値を設定しても効果はありません。

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

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


public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      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);

      outputBlock.Text += "Sorted alphabetically by last name:\n";
      if (String.Compare(name1, index1, name2, index2, length, 
                         new CultureInfo("en-US"), CompareOptions.IgnoreCase) < 0)
         outputBlock.Text += name1 + "\n" + name2; 
      else
         outputBlock.Text += name2 + "\n" + name1; 
   }
}


Windows Phone OS

サポート: 8.0, 7.1, 7.0

この情報は役に立ちましたか。
(残り 1500 文字)
フィードバックをいただき、ありがとうございました
表示:
© 2014 Microsoft. All rights reserved.