カテゴリ: C# 更新日: 2025/10/18

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#で複数ファイルをまとめて操作する方法(foreach・LINQ)をやさしく解説!
C#のインターフェースとは?クラス設計を柔軟にする基本技術
C#のコンストラクタの役割と使い方!オブジェクト初期化の基本
COBOLでデータベース接続を理解しよう!初心者でもわかる基本の考え方
人気記事
No.1
Java&Spring記事人気No1
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.3
Java&Spring記事人気No3
C#の数値型をマスターしよう!int・double・decimalの違いと使い方
No.4
Java&Spring記事人気No4
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法