C#のString.Contains
メソッドは、文字列が特定の文字列を含んでいるかどうかを判定するためのメソッドです。本章では、その基本的な使い方と、大小文字の区別を無視する方法、発生しうる例外について解説します。
Contains
メソッドの基本的な使い方
Contains
メソッドは、対象の文字列内に指定した文字列が含まれているかどうかを判定し、結果をbool
型で返します。
string value = "abcde";
bool result = value.Contains("cd"); // true
この例では、value
に”abcde”が設定されており、その中に”cd”が含まれているかどうかを確認しています。結果はtrue
になります。
含まれていない場合の挙動
例えば、以下のようにContains
メソッドにce
を指定した場合、結果はfalse
になります。
string value = "abcde";
bool result = value.Contains("ce"); // false
この結果は、c
とe
が文字列内に存在していても、連続していないためです。もしce
がそのまま連続して含まれていれば、true
になります。
大文字・小文字の区別
Contains
メソッドはデフォルトで大文字・小文字を区別します。そのため、以下のコードではfalse
が返ります。
string value = "abcde";
bool result = value.Contains("CD"); // false
これは、value
が小文字であるのに対し、検索対象のCD
が大文字であるためです。
大文字・小文字を区別しない検索
.NET Core 2.1
以降では、第二引数にStringComparison
を指定することで、大文字・小文字を区別せずに検索できます。
string value = "abcde";
bool result = value.Contains("CD",
StringComparison.OrdinalIgnoreCase); // true
このように、StringComparison.OrdinalIgnoreCase
を指定すると、大文字・小文字を無視した比較が可能になります。
Contains
メソッドの例外
Contains
メソッドを使用する際には、引数として渡す文字列がnull
でないことを保証する必要があります。もしnull
を渡してしまうと、ArgumentNullException
が発生します。
string value = "abcde"; string searchString = null;
bool result = value.Contains(searchString,
StringComparison.OrdinalIgnoreCase);
// ArgumentNullExceptionが発生
そのため、Contains
を使用する際には、null
チェックを行うか、確実に値が入っている文字列を指定するようにしましょう。
まとめ
Contains
メソッドは、指定した文字列が含まれているかを判定する。- デフォルトでは大文字・小文字を区別する。
.NET Core 2.0
以降では、StringComparison.OrdinalIgnoreCase
を指定することで、大文字・小文字を無視した比較が可能。null
を引数に指定するとArgumentNullException
が発生するため、適切な対策が必要。
これらのポイントを押さえて、適切にContains
メソッドを活用しましょう。