.NET には、文字列の値を比較するためのメソッドがいくつか用意されています。 次の表に、値比較メソッドの一覧と説明を示します。
メソッド名 | 用途 |
---|---|
String.Compare | 2 つの文字列の値を比較します。 整数値が返されます。 |
String.CompareOrdinal | ローカル カルチャに関係なく、2 つの文字列を比較します。 整数値が返されます。 |
String.CompareTo | 現在の文字列オブジェクトを別の文字列と比較します。 整数値が返されます。 |
String.StartsWith | 文字列が渡された文字列で始まるかどうかを判断します。 ブール値を返します。 |
String.EndsWith | 文字列が渡された文字列で終わるかどうかを判断します。 ブール値を返します。 |
String.Contains | 文字または文字列が別の文字列内に含まれるかどうかを判断します。 ブール値を返します。 |
String.Equals | 2 つの文字列が同じかどうかを判断します。 ブール値を返します。 |
String.IndexOf | 調べる文字列の先頭から始まる、文字または文字列のインデックス位置を返します。 整数値が返されます。 |
String.LastIndexOf | 調べる文字列の末尾から始まる、文字または文字列のインデックス位置を返します。 整数値が返されます。 |
Compare
メソッド
静的 String.Compare メソッドは、2 つの文字列を完全に比較する方法を提供します。 この方法は文化に配慮しています。 この関数を使用すると、2 つの文字列または 2 つの文字列の部分文字列を比較できます。 さらに、大文字と小文字の区別や文化的な違いを考慮するか無視するかを選べるオーバーロードが提供されます。 次の表に、このメソッドが返す可能性がある 3 つの整数値を示します。
戻り値 | 条件 |
---|---|
負の整数 | 最初の文字列は、並べ替え順序で 2 番目の文字列の前にあります。 -又は- 最初の文字列は null 。 |
0 | 最初の文字列と 2 番目の文字列が等しい。 -又は- どちらの文字列も null 。 |
正の整数 -又は- 1 |
最初の文字列は、並べ替え順序で 2 番目の文字列の後に続きます。 -又は- 2 番目の文字列は null 。 |
重要
String.Compare メソッドは、主に文字列の順序付けまたは並べ替え時に使用することを目的としています。 String.Compare メソッドを使用して等価性をテストしないでください (つまり、1 つの文字列が他の文字列より小さいか大きいかに関係なく、戻り値 0 を明示的に検索する場合)。 代わりに、2 つの文字列が等しいかどうかを判断するには、 String.Equals(String, String, StringComparison) メソッドを使用します。
次の例では、 String.Compare メソッドを使用して、2 つの文字列の相対値を決定します。
string string1 = "Hello World!";
Console.WriteLine(String.Compare(string1, "Hello World?"));
Dim string1 As String = "Hello World!"
Console.WriteLine(String.Compare(string1, "Hello World?"))
次の使用例は、コンソールに -1
を表示します。
前の例は、既定ではカルチャに依存します。 カルチャを認識しない文字列比較を実行するには、String.Compare指定して使用するカルチャを指定できる メソッドのオーバーロードを使用します。 String.Compare メソッドを使用してカルチャを区別しない比較を実行する方法を示す例については、「カルチャに依存しない文字列の比較」を参照してください。
CompareOrdinal
メソッド
String.CompareOrdinal メソッドは、ローカル カルチャを考慮せずに 2 つの文字列オブジェクトを比較します。 このメソッドの戻り値は、前の表の Compare
メソッドによって返される値と同じです。
重要
String.CompareOrdinal メソッドは、主に文字列の順序付けまたは並べ替え時に使用することを目的としています。 String.CompareOrdinal メソッドを使用して等価性をテストしないでください (つまり、1 つの文字列が他の文字列より小さいか大きいかに関係なく、戻り値 0 を明示的に検索する場合)。 代わりに、2 つの文字列が等しいかどうかを判断するには、 String.Equals(String, String, StringComparison) メソッドを使用します。
次の例では、 CompareOrdinal
メソッドを使用して、2 つの文字列の値を比較します。
string string1 = "Hello World!";
Console.WriteLine(String.CompareOrdinal(string1, "hello world!"));
Dim string1 As String = "Hello World!"
Console.WriteLine(String.CompareOrdinal(string1, "hello world!"))
次の使用例は、コンソールに -32
を表示します。
CompareTo
メソッド
String.CompareTo メソッドは、現在の文字列オブジェクトがカプセル化する文字列を別の文字列またはオブジェクトと比較します。 このメソッドの戻り値は、前の表の String.Compare メソッドによって返される値と同じです。
重要
String.CompareTo メソッドは、主に文字列の順序付けまたは並べ替え時に使用することを目的としています。 String.CompareTo メソッドを使用して等価性をテストしないでください (つまり、1 つの文字列が他の文字列より小さいか大きいかに関係なく、戻り値 0 を明示的に検索する場合)。 代わりに、2 つの文字列が等しいかどうかを判断するには、 String.Equals(String, String, StringComparison) メソッドを使用します。
次の例では、 String.CompareTo メソッドを使用して、 string1
オブジェクトを string2
オブジェクトと比較します。
string string1 = "Hello World";
string string2 = "Hello World!";
int MyInt = string1.CompareTo(string2);
Console.WriteLine( MyInt );
Dim string1 As String = "Hello World"
Dim string2 As String = "Hello World!"
Dim MyInt As Integer = string1.CompareTo(string2)
Console.WriteLine(MyInt)
次の使用例は、コンソールに -1
を表示します。
String.CompareTo メソッドのすべてのオーバーロードでは、カルチャに依存する比較と大文字と小文字が区別される比較が既定で実行されます。 カルチャに依存しない比較を実行できる、このメソッドのオーバーロードは提供されていません。 コードをわかりやすくするために、代わりに String.Compare
メソッドを使用し、カルチャに依存しない操作に CultureInfo.CurrentCulture を指定するか、カルチャを区別しない操作に CultureInfo.InvariantCulture することをお勧めします。
String.Compare
メソッドを使用してカルチャに依存しない比較とカルチャを区別しない比較の両方を実行する方法を示す例については、「Culture-Insensitive 文字列比較の実行」を参照してください。
Equals
メソッド
String.Equals メソッドは、2 つの文字列が同じかどうかを簡単に判断できます。 この大文字と小文字を区別するメソッドは、 true
またはブール値 false
返します。 次の例に示すように、既存のクラスから使用できます。 次の例では、 Equals
メソッドを使用して、文字列オブジェクトに "Hello World" という語句が含まれているかどうかを判断します。
string string1 = "Hello World";
Console.WriteLine(string1.Equals("Hello World"));
Dim string1 As String = "Hello World"
Console.WriteLine(string1.Equals("Hello World"))
次の使用例は、コンソールに True
を表示します。
このメソッドは、静的メソッドとしても使用できます。 次の例では、静的メソッドを使用して 2 つの文字列オブジェクトを比較します。
string string1 = "Hello World";
string string2 = "Hello World";
Console.WriteLine(String.Equals(string1, string2));
Dim string1 As String = "Hello World"
Dim string2 As String = "Hello World"
Console.WriteLine(String.Equals(string1, string2))
次の使用例は、コンソールに True
を表示します。
StartsWith
および EndsWith
メソッド。
String.StartsWith メソッドを使用して、文字列オブジェクトが別の文字列を含む同じ文字で始まるかどうかを判断できます。 この大文字と小文字を区別するメソッドは、現在の文字列オブジェクトが渡された文字列で始まる場合は true
を返し、渡されない場合は false
します。 次の例では、このメソッドを使用して、文字列オブジェクトが "Hello" で始まるかどうかを判断します。
string string1 = "Hello World";
Console.WriteLine(string1.StartsWith("Hello"));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.StartsWith("Hello"))
次の使用例は、コンソールに True
を表示します。
String.EndsWith メソッドは、渡された文字列を、現在の文字列オブジェクトの末尾に存在する文字と比較します。 また、ブール値も返します。 次の例では、 EndsWith
メソッドを使用して文字列の末尾を確認します。
string string1 = "Hello World";
Console.WriteLine(string1.EndsWith("Hello"));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.EndsWith("Hello"))
次の使用例は、コンソールに False
を表示します。
IndexOf
および LastIndexOf
メソッド。
String.IndexOfメソッドを使用して、文字列内の特定の文字が最初に出現する位置を決定できます。 この大文字と小文字を区別するメソッドは、文字列の先頭からカウントを開始し、0 から始まるインデックスを使用して渡された文字の位置を返します。 文字が見つからない場合は、値 –1 が返されます。
次の例では、 IndexOf
メソッドを使用して、文字列内で最初に出現する 'l
' 文字を検索します。
string string1 = "Hello World";
Console.WriteLine(string1.IndexOf('l'));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.IndexOf("l"))
次の使用例は、コンソールに 2
を表示します。
String.LastIndexOf メソッドは、文字列内の特定の文字の最後の出現位置を返す点を除き、String.IndexOf
メソッドに似ています。 大文字と小文字が区別され、0 から始まるインデックスが使用されます。
次の例では、 LastIndexOf
メソッドを使用して、文字列内で最後に出現する 'l
' 文字を検索します。
string string1 = "Hello World";
Console.WriteLine(string1.LastIndexOf('l'));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.LastIndexOf("l"))
次の使用例は、コンソールに 9
を表示します。
どちらのメソッドも、 String.Remove メソッドと組み合わせて使用する場合に便利です。
IndexOf
メソッドまたはLastIndexOf
メソッドのいずれかを使用して文字の位置を取得し、その位置を Remove
メソッドに指定して、その文字で始まる文字または単語を削除できます。
こちらも参照ください
- .NET で文字列を使用するためのベスト プラクティス
- 基本的な文字列操作
- カルチャに依存しない文字列操作を実行する
- 重みテーブルの並べ替え - Windows 上の .NET Framework および .NET Core 1.0-3.1 で使用されます
- 既定の Unicode 照合順序要素テーブル - すべてのプラットフォームで .NET 5、Linux および macOS の .NET Core によって使用されます
.NET