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

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
Type: System.String

比較する最初の文字列。

strB
Type: System.String

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

ignoreCase
Type: System.Boolean

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

culture
Type: System.Globalization.CultureInfo

カルチャ固有の比較情報を提供するオブジェクト。

戻り値

Type: System.Int32

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

状態

0 より小さい値

並べ替え順序において strAstrB の前になります。

0

strA は並べ替え順序で、strB と同じ位置に出現します。

0 より大きい値

並べ替え順序において strAstrB の後ろになります。

Exception Condition
ArgumentNullException

culturenull です。

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

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

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

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

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

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 「Ani-正しくない」(ソフト ハイフン、または U +0 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メソッドと供給のいずれかの値CompareOptions.OrdinalまたはCompareOptions.OrdinalIgnoreCaseoptionsパラメーター。

次の例では、カルチャが比較に影響を及ぼすを示しています。 チェコ語、チェコ共和国カルチャ"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
1.1 以降で使用可能
トップに戻る
表示: