カテゴリ: VB.NET 更新日: 2026/02/15

VB.NETで文字列を検索する方法をマスター!IndexOfとContainsの使い方を初心者向けに徹底解説

VB.NETで文字列を検索する方法(IndexOf, Contains)
VB.NETで文字列を検索する方法(IndexOf, Contains)

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

生徒

「文章の中から、特定の言葉が入っているかどうかを調べたいときはどうすればいいですか?」

先生

「VB.NETには、文字列の中に特定の文字があるかを探すための便利な道具が用意されていますよ。」

生徒

「検索する方法はいくつかあるんですか?」

先生

「はい。主に『含まれているか確認する』方法と『どこにあるか場所を特定する』方法の2つがあります。今回はその代表格であるContainsとIndexOfを詳しく見ていきましょう!」

1. 文字列検索が必要な理由とは?

1. 文字列検索が必要な理由とは?
1. 文字列検索が必要な理由とは?

プログラミングをしていると、膨大な文字データの中から特定の情報を探し出したい場面が非常に多くあります。例えば、ユーザーが入力したメールアドレスに「@」が含まれているかを確認したり、住所録から「東京都」で始まるデータを見つけ出したりする場合です。このように、ある言葉がどこにあるのか、あるいは存在するかどうかをチェックする操作を文字列検索と呼びます。

VB.NET(ヴィービー・ドットネット)は、マイクロソフトが開発したプログラミング言語で、初心者にも読みやすい英語に近い書き方が特徴です。文字列を扱う操作は、どんなアプリケーション開発でも必ずと言っていいほど登場する基本中の基本ですので、しっかりとマスターしましょう。

2. Containsメソッドで「含まれているか」をチェックする

2. Containsメソッドで「含まれているか」をチェックする
2. Containsメソッドで「含まれているか」をチェックする

まずは一番簡単な方法であるContains(コンテインズ)メソッドについて解説します。英語の「Contain」は「含む」という意味があります。その名の通り、ある文字列の中に指定したキーワードが含まれているかどうかを調べるために使います。

このメソッドの最大の特徴は、結果が「はい(True)」か「いいえ(False)」の二択で返ってくることです。このように「はい」か「いいえ」で表されるデータ型をBoolean型(論理型)と呼びます。難しい計算や場所の特定は不要で、単に「あるかないか」だけを知りたいときに最適な方法です。


Dim message As String = "プログラミングの世界へようこそ!"
' "世界" という文字が含まれているか確認
Dim result As Boolean = message.Contains("世界")

If result = True Then
    Console.WriteLine("「世界」という言葉が見つかりました!")
Else
    Console.WriteLine("見つかりませんでした。")
End If

実行結果は以下のようになります。


「世界」という言葉が見つかりました!

3. IndexOfメソッドで「場所」を特定する

3. IndexOfメソッドで「場所」を特定する
3. IndexOfメソッドで「場所」を特定する

次に、より高度な検索方法であるIndexOf(インデックス・オブ)メソッドを紹介します。これは、探したい文字が文字列の何番目にあるかを数値で教えてくれるものです。

ここで注意が必要なのが、パソコンの世界では数は「0」から数え始めるというルールです。1番最初の文字は「0番目」、2番目の文字は「1番目」となります。この順番を表す数字のことをインデックス(添え字)と呼びます。もし、探している文字が見つからなかった場合、IndexOfは「-1」という数値を返します。これは「存在しない」という合図なので、非常に重要なポイントです。


Dim targetText As String = "VB.NETは楽しいプログラミング言語です。"
' "楽しい" が何文字目から始まるか調べる
Dim position As Integer = targetText.IndexOf("楽しい")

If position <> -1 Then
    Console.WriteLine("見つかった位置は " & position & " 番目です。")
Else
    Console.WriteLine("見つかりませんでした。")
End If

実行結果は以下の通りです。0から数えてみてください。「V」が0、「B」が1、「.」が2、「N」が3、「E」が4、「T」が5、「は」が6なので、「楽しい」の「楽」は7番目になります。


見つかった位置は 7 番目です。

4. 大文字と小文字を区別しないで検索する方法

4. 大文字と小文字を区別しないで検索する方法
4. 大文字と小文字を区別しないで検索する方法

文字列の検索で初心者がよくつまずくのが、大文字と小文字の区別です。例えば、「Visual Basic」という文字の中から「visual」を検索しようとすると、先頭が小文字なので通常は見つからないと判定されてしまいます。これを無視して検索するには、オプションを指定する必要があります。

VB.NETではStringComparison(ストリング・コンパリゾン)という機能を使って、比較のルールを細かく決めることができます。StringComparison.OrdinalIgnoreCase(オーディナル・イグノア・ケース)という指定をすると、大文字と小文字を同じものとして扱ってくれます。これは実務でもよく使われるテクニックです。


Dim sampleText As String = "Microsoft Visual Studio"
' 小文字の "visual" で検索してみる(大文字小文字を区別しない設定)
Dim isFound As Boolean = sampleText.Contains("visual", StringComparison.OrdinalIgnoreCase)

If isFound Then
    Console.WriteLine("大文字小文字を区別せずに発見しました!")
End If

5. 文字列の先頭や末尾を判定する方法(StartsWith / EndsWith)

5. 文字列の先頭や末尾を判定する方法(StartsWith / EndsWith)
5. 文字列の先頭や末尾を判定する方法(StartsWith / EndsWith)

「特定の文字から始まっているか」や「特定の文字で終わっているか」だけを調べたいときもあります。そのような場合は、検索メソッドの兄弟分であるStartsWith(スターツ・ウィズ)やEndsWith(エンズ・ウィズ)を使うと非常にスマートに書けます。

例えば、ファイルの拡張子が「.txt」かどうかを調べたり、URLが「https」で始まっているかを確認したりする際に便利です。IndexOfを使って「0文字目にあるか」を調べることもできますが、StartsWithを使ったほうがコードが読みやすくなり、ミスも減ります。このように、コードを誰が見ても分かりやすく書くことを「可読性を高める」と言います。

6. 文字列検索を活用した実践的な条件分岐

6. 文字列検索を活用した実践的な条件分岐
6. 文字列検索を活用した実践的な条件分岐

これまでに学んだContainsIndexOfは、プログラムの処理を枝分かれさせる条件分岐(If文)と組み合わせて真価を発揮します。単に検索するだけでなく、「もし見つかったらこの処理をする、見つからなかったら別の処理をする」という流れを作ることが、プログラミングの醍醐味です。

初心者のうちは、まず「Contains」を使って「あるかないか」を確認する癖をつけましょう。その後、もしその文字を使って切り取り操作などを行いたい場合に「IndexOf」で場所を調べる、という二段階のステップで考えると理解がスムーズに進みます。検索メソッドは他にも、特定の文字が最後に出現する位置を探すLastIndexOfなど、多くのバリエーションがあります。

7. エラーを防ぐためのポイント:Nullチェック

7. エラーを防ぐためのポイント:Nullチェック
7. エラーを防ぐためのポイント:Nullチェック

文字列検索を行う際に、一つだけ気をつけなければならない非常に重要な概念があります。それがNull(ヌル)です。プログラミングにおいてNullとは「何もない、空っぽの状態」を指します。もし、中身が全く入っていない変数(Nothing)に対して検索メソッドを使おうとすると、プログラムが途中で止まってしまう「例外(エラー)」が発生します。

安全に検索を行うためには、変数が空っぽでないことを確認してから検索を実行するか、VB.NETの便利な機能である「?.」(Null条件演算子)などを使って、エラーにならない工夫をすることが大切です。初心者のうちは、まず「変数の箱の中にちゃんと文字が入っているかな?」と意識するだけでも、バグの少ない良いプログラムが書けるようになりますよ。

カテゴリの一覧へ
新着記事
New1
ASP.NET
ASP.NETのクロスサイトスクリプティング(XSS)を完全解説!初心者でもわかる仕組みと対策
New2
VB.NET
VB.NETの文字列置換を完全解説!初心者でもわかるReplaceメソッドの使い方
New3
ASP.NET
ASP.NETのセキュリティ対策を完全ガイド!初心者でもわかるXSS・CSRF・SQLインジェクションの基本
New4
VB.NET
VB.NETで文字列を検索する方法をマスター!IndexOfとContainsの使い方を初心者向けに徹底解説
人気記事
No.1
Java&Spring記事人気No1
VB.NET
VB.NETで文字列を連結する方法を完全ガイド!&演算子とString.Concatの使い方
No.2
Java&Spring記事人気No2
VB.NET
VB.NETのコレクション操作でよくあるエラーと解決策!初心者向けトラブル脱出ガイド
No.3
Java&Spring記事人気No3
VB.NET
VB.NETの配列(Array)の作り方と基本操作を徹底解説!初心者でもわかる入門ガイド
No.4
Java&Spring記事人気No4
VB.NET
VB.NETの文字列操作を完全ガイド!初心者が覚えるべき基本と宣言方法
No.5
Java&Spring記事人気No5
VB.NET
VB.NETでコレクションをソートする方法を完全ガイド!並び替えの基本
No.6
Java&Spring記事人気No6
ASP.NET
ASP.NET MVCでセッションを使う方法を完全解説!初心者でもわかる状態管理入門
No.7
Java&Spring記事人気No7
ASP.NET
ASP.NETの認証の仕組みを完全解説!初心者でもわかるログインの基本
No.8
Java&Spring記事人気No8
ASP.NET
ASP.NETの認証と認可の違いを完全解説!初心者でもわかるOAuth・JWT・Azure ADの基本