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メソッドを活用しましょう。