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

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

指定した 2 つの String オブジェクトを比較し、並べ替え順序におけるそれらの相対位置を示す整数を返します。比較時に、大文字と小文字を区別するかどうかを指定し、比較に影響を及ぼすカルチャ固有の情報を使用します。

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

public static int Compare(
	string strA,
	string strB,
	bool ignoreCase,
	CultureInfo culture
)

パラメーター

strA
型 : System.String
比較する最初の文字列。
strB
型 : System.String
比較する 2 番目の文字列。
ignoreCase
型 : System.Boolean
比較時に大文字と小文字の区別を無視する場合は true。それ以外の場合は false
culture
型 : System.Globalization.CultureInfo
カルチャ固有の比較情報を提供するオブジェクト。

戻り値

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

状態

0 より小さい値

strAstrB より小さい。

0

strAstrB が等しい。

0 を超える値

strAstrB より大きくなっています。

例外条件
ArgumentNullException

culturenull なので、

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

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

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

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

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


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


序数に基づく比較を使用して、"file" へのパス名を比較します。 これを実行するための適切なコードは次のとおりです。


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


呼び出し時の注意

文字セットには無視できる文字が含まれています。 Compare(String, String, Boolean, CultureInfo) のメソッドは、カルチャに依存した比較を実行するときに、このような文字は考慮されません。 たとえば、次のコードに .NET Framework 4 以降で実行されている場合は、インバリアント カルチャを使用して、「Animal」を持つ「Animal」の大文字と小文字を区別しない比較は (ソフト ハイフン、または U+00AD 2) を使用して二つの文字列が等しいことを示します。


using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string s1 = "Ani\u00ADmal";
      string s2 = "animal";

      Console.WriteLine("Comparison of '{0}' and '{1}': {2}", 
                        s1, s2, String.Compare(s1, s2, true,
                        CultureInfo.InvariantCulture));
   }
}
// The example displays the following output:
//       Comparison of 'ani-mal' and 'animal': 0


文字列比較の無視できる文字を識別するには、Compare のメソッドを呼び出し、options パラメーターの CompareOptions.Ordinal または CompareOptions.OrdinalIgnoreCase の値を指定します。

カルチャが比較に影響を及ぼす例を次に示します。 チェコ語 - チェコ共和国のカルチャでは、"ch" は "d" よりも大きい単一の文字です。 しかし、英語 - 米国のカルチャでは、"ch" は 2 つの文字から成り、”c” は ”d” より小さくなります。


using System;
using System.Globalization;

class Sample {
    public static void Main() {
    String str1 = "change";
    String str2 = "dollar";
    String relation = null;

    relation = symbol( String.Compare(str1, str2, false, new CultureInfo("en-US")) );
    Console.WriteLine("For en-US: {0} {1} {2}", str1, relation, str2);

    relation = symbol( String.Compare(str1, str2, false, new CultureInfo("cs-CZ")) );
    Console.WriteLine("For cs-CZ: {0} {1} {2}", str1, relation, str2);
    }

    private static String symbol(int r) {
    String s = "=";
    if      (r < 0) s = "<";
    else if (r > 0) s = ">";
    return s;
    }
}
/*
This example produces the following results.
For en-US: change < dollar
For cs-CZ: change > dollar
*/


.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 システム要件」を参照してください。

コミュニティの追加

追加
表示:
© 2015 Microsoft