次の方法で共有


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

指定した 2 つの String オブジェクトを比較します。大文字と小文字を区別するかどうかの指定と、比較に影響を及ぼすカルチャ固有の情報を使用します。

Overloads Public Shared Function Compare( _
   ByVal strA As String, _   ByVal strB As String, _   ByVal ignoreCase As Boolean, _   ByVal culture As CultureInfo _) As Integer
[C#]
public static int Compare(stringstrA,stringstrB,boolignoreCase,CultureInfoculture);
[C++]
public: static int Compare(String* strA,String* strB,boolignoreCase,CultureInfo* culture);
[JScript]
public static function Compare(
   strA : String,strB : String,ignoreCase : Boolean,culture : CultureInfo) : int;

パラメータ

  • strA
    第 1 の String
  • strB
    第 2 の String
  • ignoreCase
    大文字と小文字を区別して比較するか、区別せずに比較するかを示す Boolean 。(true は、大文字と小文字を区別せずに比較することを示します。
  • culture
    カルチャ固有の比較情報を提供する CultureInfo オブジェクト。

戻り値

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

意味
0 より小 strAstrB より小さい。
0 strAstrB は等しい。
0 より大 strAstrB より大きい。

例外

例外の種類 条件
ArgumentNullException culture が null 参照 (Visual Basic では Nothing) です。

解説

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

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

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

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

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

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

パスの名前は変更できない方法で比較する必要があります。これを実行するための適切なコードは次のとおりです。

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

使用例

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

 
Imports System
Imports System.Globalization
 _

Class Sample
   Public Shared Sub Main()
      Dim str1 As [String] = "change"
      Dim str2 As [String] = "dollar"
      Dim relation As [String] = Nothing
      
      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)
   End Sub 'Main
   
   Private Shared Function symbol(r As Integer) As [String]
      Dim s As [String] = "="
      If r < 0 Then
         s = "<"
      Else
         If r > 0 Then
            s = ">"
         End If
      End If
      Return s
   End Function 'symbol
End Class 'Sample
'
'This example produces the following results.
'For en-US: change < dollar
'For cs-CZ: change > dollar
'

[C#] 
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
*/

[C++] 
#using <mscorlib.dll>
using namespace System;
using namespace System::Globalization;

String * symbol(int r)
{
   String * s = S"=";
   if (r < 0) 
      s = S"<";
   else if (r > 0) 
      s = S">";
   return s;
}

int main()
{
   String * str1 = S"change";
   String * str2 = S"dollar";
   String* relation = 0;

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

   relation = symbol(String::Compare(str1, str2, false, new CultureInfo(S"cs-CZ")));
   Console::WriteLine(S"For cs-CZ: {0} {1} {2}", str1, relation, str2);
}
/*
This example produces the following results.
For en-US: change < dollar
For cs-CZ: change > dollar
*/

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

参照

String クラス | String メンバ | System 名前空間 | String.Compare オーバーロードの一覧 | Int32 | CompareOrdinal | CompareTo | IsPrefix | Boolean