今回は、C#のContainsで特定の文字列を含むかの判定をする方法をご紹介します。
Containsとは
C#のContainsメソッドは、文字列が別の文字列を含んでいるかどうかを判定するためのメソッドです。
返り値は真偽値(bool)で、特定の文字列が含まれている場合はtrue、含まれていない場合はfalseを返します。
デフォルトでは大文字と小文字を区別して比較するため、用途によっては大文字・小文字を無視した検索が必要になる場合もあります。
CSVの書き込み方法
判定結果を後から活用したい場合は、結果をCSVファイルへ書き込むのも方法の一つです。
たとえば、特定の文字列を含んだ場合のみ、CSVに書き込みを行うフローを実装できます。
ここでは、簡単な例として、文字列に「C#」が含まれている場合にCSVへ書き込むコードを示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
using System; using System.IO; class CsvExample { static void Main() { string sentence = "Hello, C# world!"; bool containsCSharp = sentence.Contains("C#"); // CSVに書き込む文字列を作成 string csvLine = $"\"{sentence}\",\"{containsCSharp}\""; // 判定結果がtrueの場合にCSVへ書き込み if (containsCSharp) { // CSVファイルに追記 using (StreamWriter sw = new StreamWriter("output.csv", true)) { // 1行書き込む sw.WriteLine(csvLine); } Console.WriteLine("『C#』が含まれているため、CSVに書き込みました。"); } else { Console.WriteLine("『C#』は含まれていないため、CSVには書き込みません。"); } } } |
『C#』が含まれているため、CSVに書き込みました。
基本的な使い方
Containsメソッドの最も基本的な使い方は、対象文字列に直接Containsを呼び出す方法です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using System; class BasicUsage { static void Main() { string sentence = "Hello, C# world!"; if (sentence.Contains("C#")) { Console.WriteLine("『C#』が含まれています。"); } else { Console.WriteLine("『C#』は含まれていません。"); } } } |
『C#』が含まれています。
このように、判定したい文字列をContainsメソッドに渡すだけで、含まれているかどうかを簡単に確かめられます。
複数の文字列に対して判定を繰り返す場合は、ループやLINQを組み合わせることで一括チェックも可能です。
実用的な具体例
大文字・小文字を区別せずに検索したいときは、ToLower()やToUpper()で変換する方法や、StringComparisonを指定する方法があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using System; class IgnoreCaseExample { static void Main() { string sentence = "Hello, C# world!"; // 大文字・小文字を無視して"c#"が含まれているかを判定 if (sentence.Contains("c#", StringComparison.OrdinalIgnoreCase)) { Console.WriteLine("大文字・小文字を無視して『c#』が含まれています。"); } else { Console.WriteLine("『c#』は含まれていません。"); } } } |
大文字・小文字を無視して『c#』が含まれています。
この機能を活用することで、ユーザーの入力内容が「C#」や「c#」といった表記ゆれを含んでいても、同一に扱うことができます。
また、複数キーワードのいずれかが含まれるかを判定したい場合、LINQのAnyメソッドを使うと便利です。
注意点
nullの取り扱いには注意が必要です。
対象の文字列がnullの場合、NullReferenceExceptionが発生するため、事前のチェックを忘れないようにしてください。
また、デフォルトの比較では大文字・小文字が区別される点にも注意しましょう。
文化依存の比較を回避したい場合は、StringComparisonをうまく活用し、比較方法を明示的に指定すると予期しない結果を避けられます。
さらに、長大な文字列を扱う場合や頻繁に検索を行う場合は、毎回の文字列変換がパフォーマンスに影響する可能性もあります。
まとめ
C#のContainsメソッドは、文字列検索をシンプルに実現できる便利な機能です。
大文字・小文字の無視やCSVへの書き込みなど、実際のシナリオに応じて柔軟に組み合わせるとさまざまな用途に活用できます。
nullチェックや検索方法の指定を意識して、安定した文字列判定を行いましょう。