カテゴリ: C# 更新日: 2025/12/02

C#の文字列検索(IndexOf・Containsなど)の基本を解説

C#の文字列検索(IndexOf・Containsなど)の基本を解説
C#の文字列検索(IndexOf・Containsなど)の基本を解説

先生と生徒の会話形式で理解しよう

生徒

「先生、C#で文字列の中に特定の文字や単語があるかどうかを調べる方法ってありますか?」

先生

「はい、ありますよ。C#では、IndexOfメソッドやContainsメソッドを使って、文字列の中から特定の文字や単語を簡単に検索できます。」

生徒

「名前の違いでどう使い分けるのかが気になります!」

先生

「いいですね。それでは、IndexOfContainsの基本的な使い方を順番に見ていきましょう。」

1. 文字列検索とは?

1. 文字列検索とは?
1. 文字列検索とは?

「文字列検索」とは、ある文章や文字列の中から特定の文字や単語を探すことをいいます。たとえば、「りんご、バナナ、みかん」という文字列の中に「バナナ」が含まれているかどうかを調べたいときに使います。

日常の例で言うと、本の中から「重要」という言葉を探すようなものです。C#ではこれを自動的に探してくれる便利な機能があります。

2. IndexOfメソッドの基本

2. IndexOfメソッドの基本
2. IndexOfメソッドの基本

IndexOfメソッドは、指定した文字や単語が文字列の中でどの位置(インデックス)にあるかを調べるためのメソッドです。

インデックス(index)とは、文字列の中の文字の順番を表す番号のことです。C#では最初の文字が「0番」になります。

たとえば、「Hello」という文字列の中で「e」は1番目(インデックス1)にあります。


string text = "りんご、バナナ、みかん";
int index = text.IndexOf("バナナ");
Console.WriteLine(index);

実行結果:


4

この例では、「バナナ」という文字列が「りんご、」の後にあるため、インデックスは4になります。もし見つからない場合は「-1」が返されます。

IndexOfは「位置」を調べたいときに使うのがポイントです。

3. IndexOfで見つからない場合の判定

3. IndexOfで見つからない場合の判定
3. IndexOfで見つからない場合の判定

先ほどの説明の通り、IndexOfは見つからない場合に「-1」を返します。そのため、条件文と組み合わせて「文字が含まれているかどうか」を判断することもできます。


string text = "りんご、バナナ、みかん";
if (text.IndexOf("ぶどう") != -1)
{
    Console.WriteLine("ぶどうが見つかりました。");
}
else
{
    Console.WriteLine("ぶどうは見つかりませんでした。");
}

実行結果:


ぶどうは見つかりませんでした。

このように、IndexOfを使うことで「ある・ない」を調べるだけでなく、「どの位置にあるのか」も知ることができます。

4. Containsメソッドの基本

4. Containsメソッドの基本
4. Containsメソッドの基本

Containsメソッドは、指定した文字列が含まれているかどうかを「真(true)」または「偽(false)」で返します。つまり、「含まれているか」をシンプルに確認したいときに便利です。


string text = "りんご、バナナ、みかん";
bool hasBanana = text.Contains("バナナ");
Console.WriteLine(hasBanana);

実行結果:


True

Containsは、文字列の中に「その文字があるか」だけを知りたいときに使うのがおすすめです。シンプルで読みやすいコードになります。

5. IndexOfとContainsの違いを理解しよう

5. IndexOfとContainsの違いを理解しよう
5. IndexOfとContainsの違いを理解しよう

どちらも文字列を検索するためのメソッドですが、役割が少し異なります。以下の表で比較してみましょう。

メソッド名返り値(かえりち)用途
IndexOf見つかった位置(int)または -1文字列の位置を知りたいとき
Containstrue または false含まれているかどうかを確認したいとき

このように、位置を調べたい場合はIndexOf、あるかどうかだけ調べたい場合はContainsを使うと良いでしょう。

6. 大文字と小文字の違いに注意

6. 大文字と小文字の違いに注意
6. 大文字と小文字の違いに注意

C#の文字列検索では、大文字と小文字が区別されます。つまり、「Apple」と「apple」は別の文字列として扱われます。


string text = "Apple";
Console.WriteLine(text.Contains("apple")); // false

実行結果:


False

もし大文字・小文字を区別せずに検索したい場合は、IndexOfに特定のオプションを指定します。


string text = "Apple";
int index = text.IndexOf("apple", StringComparison.OrdinalIgnoreCase);
Console.WriteLine(index);

実行結果:


0

このように、StringComparison.OrdinalIgnoreCaseを使うと、大文字・小文字を無視して検索できます。

7. 部分一致検索や前方一致検索の応用

7. 部分一致検索や前方一致検索の応用
7. 部分一致検索や前方一致検索の応用

文字列の中に「部分的にでも含まれているか」を調べたいときは、Containsが便利です。たとえば、ユーザーが入力したキーワードが商品名に含まれているかを調べるときなどに使います。


string product = "チョコレートケーキ";
if (product.Contains("ケーキ"))
{
    Console.WriteLine("ケーキが含まれています。");
}

実行結果:


ケーキが含まれています。

また、文字列の最初や最後に特定の文字列があるかどうかを調べるには、StartsWithEndsWithを使うこともできます。


string word = "CSharp入門";
Console.WriteLine(word.StartsWith("CSharp")); // true
Console.WriteLine(word.EndsWith("入門")); // true

まとめ

まとめ
まとめ

C#での文字列検索は、日常的なプログラミングの中でも特に使用頻度が高く、基礎としてしっかり理解しておきたい重要なポイントです。この記事では、IndexOfメソッドとContainsメソッドを中心に、文字列の位置を調べる方法や、含まれているかどうかを確認するための基本操作を詳しく学びました。りんごやバナナのような日常的な単語を例に挙げることで、文字列検索のしくみがより直感的に理解できるよう工夫されています。また、プログラムの内部では、文字列のインデックスが0から始まることや、検索に失敗したときに返される値が-1になることなど、初学者がつまずきやすい点についても丁寧に整理しました。 さらに、Containsメソッドがtrue/falseで判定できる便利な機能であること、大文字と小文字を区別する場合としない場合で動きが変わること、StringComparison.OrdinalIgnoreCaseを利用することで大小区別を無視した検索ができることなど、より実践的な応用方法も紹介しました。部分一致や前方一致を調べるStartsWith、EndsWithといった関連メソッドも併せて理解することで、柔軟な検索処理が可能になります。こうしたメソッドの特性を理解することは、検索ロジックや入力補助機能の実装、ユーザーインターフェースの改善など、プログラム全体の質を高める上でもとても有用です。

サンプルプログラムで理解を深めよう

以下は、複数の検索メソッドを組み合わせて文字列内の情報をまとめてチェックするサンプルです。実際の開発で、条件を複合的に扱いたいときに役立ちます。


string text = "りんご、バナナ、みかん、チョコレートケーキ";
int indexBanana = text.IndexOf("バナナ");
bool hasCake = text.Contains("ケーキ");
bool startsWithFruit = text.StartsWith("りんご");
bool endsWithCake = text.EndsWith("ケーキ");

Console.WriteLine(indexBanana);
Console.WriteLine(hasCake);
Console.WriteLine(startsWithFruit);
Console.WriteLine(endsWithCake);

文字列検索の基本を理解することで、複雑な入力判定やデータ処理もシンプルに記述できるようになります。特定の単語の位置を取得しつつ、同時に別の文字が含まれているかを確認するなど、複数のメソッドを組み合わせることで柔軟な判定が可能になります。こうした基礎を確実に押さえておくと、今後の学習や開発でも必ず役立つ場面が増えていきます。特にユーザー入力や検索機能を扱うシステムでは、必須ともいえる知識です。

先生と生徒の振り返り会話

生徒「先生、IndexOfとContainsの違いがだいぶ分かってきました。どっちを使うべきか迷うことが多かったんですが、用途で選べばよいんですね。」

先生「その通りです。位置を知りたいならIndexOf、あるかどうかだけ確認したいならContainsが適しています。状況によって使い分けできるようになると、記述がとても効率的になりますよ。」

生徒「あと、大文字や小文字を区別するかどうかを選べるのも便利ですね。検索機能を作るときに役立ちそうです。」

先生「ええ、ユーザーの入力に対応する検索機能などでは、大小の区別を無視するケースも多いので、StringComparison.OrdinalIgnoreCaseは覚えておくとよいですよ。」

生徒「部分一致や前方一致、後方一致まで使えるなんて、文字列検索って奥が深いですね。」

先生「深いですが、基本を理解してしまえば難しくありません。今日学んだ内容を基礎に、いろいろ応用してみてください。」

カテゴリの一覧へ
新着記事
New1
C#
C#のLINQでAny・Allなど条件確認メソッドの使い方を完全ガイド!初心者でもわかるデータ検証
New2
C#
C#のデフォルト引数と名前付き引数の使い方を解説!初心者でも安心のやさしい入門
New3
C#
C#のオブジェクト初期化子を完全ガイド!初心者でもわかる便利な使い方
New4
COBOL
COBOLの帳票出力と編集を完全マスター!条件付き表示で分かりやすい書類を作る方法
人気記事
No.1
Java&Spring記事人気No1
C#
C#でJSONファイルを読み書きする方法(JsonSerializer・Newtonsoft.Json)
No.2
Java&Spring記事人気No2
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.3
Java&Spring記事人気No3
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.4
Java&Spring記事人気No4
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.5
Java&Spring記事人気No5
C#
C#のLINQクエリ構文の書き方と基本操作をマスターしよう
No.6
Java&Spring記事人気No6
C#
C#のLINQ(リンク)とは?基本概念とデータ操作を初心者向けに徹底解説!
No.7
Java&Spring記事人気No7
C#
C#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法
No.8
Java&Spring記事人気No8
C#
C#の非同期処理とUIスレッドをマスター!WPF/WinFormsでアプリが止まる問題を解決