カテゴリ: Go言語 更新日: 2025/10/19

Go言語の文字列検索を徹底解説!Contains・Indexの使い方と活用法

Go言語の文字列の検索(Contains・Index)とその活用法
Go言語の文字列の検索(Contains・Index)とその活用法

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

生徒

「Go言語で文章の中から特定の言葉を探したいんですけど、どうすればいいですか?」

先生

「Go言語にはstringsパッケージが用意されていて、その中に文字列を検索するための便利な関数があります。代表的なのがContainsIndexです。」

生徒

「その2つはどう違うんですか?」

先生

「とても良い質問ですね。Containsは文字列が含まれているかどうかを真偽値(trueかfalse)で返し、Indexはその文字列が見つかった場所の位置を数字で返してくれます。それでは順番に見ていきましょう。」

1. Go言語で文字列検索を行う方法

1. Go言語で文字列検索を行う方法
1. Go言語で文字列検索を行う方法

Go言語の文字列検索では、標準ライブラリであるstringsパッケージを使います。このパッケージは文字列の操作に特化していて、検索・置換・分割などさまざまな処理が可能です。特に初心者の方が最初に使うことになるのが、ContainsIndexです。

たとえば「リンゴが好きです」という文章から「リンゴ」という言葉が含まれているかどうか調べることができます。検索というと難しく聞こえますが、実際には「探し物を見つける」イメージです。

2. Contains関数とは?

2. Contains関数とは?
2. Contains関数とは?

Contains関数は、指定した文字列の中に特定の文字列が含まれているかを判定します。結果はtrue(含まれる)かfalse(含まれない)の二択です。まるで部屋の中に「リンゴ」があるかをチェックするようなイメージです。


package main

import (
    "fmt"
    "strings"
)

func main() {
    text := "私はGo言語を勉強しています"
    result := strings.Contains(text, "Go")
    fmt.Println(result)
}

true

この例では、「私はGo言語を勉強しています」という文字列に「Go」が含まれているため、結果はtrueになります。

3. Index関数とは?

3. Index関数とは?
3. Index関数とは?

Index関数は、指定した文字列が最初に現れる位置(インデックス)を返します。インデックスとは文字列の何文字目にあるかを示す番号で、0から数え始めます。

もし見つからなかった場合は、-1が返ります。これは「存在しない」という意味を持っています。


package main

import (
    "fmt"
    "strings"
)

func main() {
    text := "私はGo言語を勉強しています"
    index := strings.Index(text, "Go")
    fmt.Println(index)
}

3

この場合、「Go」は文字列の4文字目(インデックスは0から数えるので3)に現れます。そのため結果は3です。

4. ContainsとIndexの違いを整理しよう

4. ContainsとIndexの違いを整理しよう
4. ContainsとIndexの違いを整理しよう

ここまでの説明を整理すると次のようになります。

  • Contains:文字列が含まれているかどうかを調べて、結果をtrueまたはfalseで返す
  • Index:文字列がどの位置にあるかを数値で返す。見つからない場合は-1

どちらを使うかは目的によって変わります。「あるかどうか」だけを知りたいならContains、「どこにあるか」も知りたいならIndexを選びます。

5. 実践的な活用例

5. 実践的な活用例
5. 実践的な活用例

ここでは、実際に日常的なシーンを想定した使い方を紹介します。

5-1. ユーザー入力のチェック

たとえば、ユーザーが入力したメールアドレスに@が含まれているかを調べることで、簡易的なバリデーション(正しいかどうかの確認)を行えます。


package main

import (
    "fmt"
    "strings"
)

func main() {
    email := "sample@example.com"
    if strings.Contains(email, "@") {
        fmt.Println("正しい形式のメールアドレスです")
    } else {
        fmt.Println("メールアドレスの形式が間違っています")
    }
}

正しい形式のメールアドレスです

5-2. キーワード検索機能

ブログの記事や商品の説明文の中から、ユーザーが検索したいキーワードが含まれているかどうかを判定する際にContainsは役立ちます。

5-3. 部分一致での情報処理

Indexを使うことで、文章中のどの位置に特定の単語があるかを調べ、さらにその部分だけを切り取るといった応用も可能です。

6. エラー処理と注意点

6. エラー処理と注意点
6. エラー処理と注意点

初心者の方が気をつけるべき点として、Index-1を返すケースがあります。これは検索した文字列が見つからなかった場合です。-1をそのまま使うとエラーにつながる可能性があるので、必ずチェックしてから利用しましょう。


package main

import (
    "fmt"
    "strings"
)

func main() {
    text := "Go言語入門"
    index := strings.Index(text, "Java")
    if index == -1 {
        fmt.Println("指定した文字列は見つかりませんでした")
    } else {
        fmt.Println("文字列は位置", index, "にあります")
    }
}

指定した文字列は見つかりませんでした
関連記事:
カテゴリの一覧へ
新着記事
Go言語の関数でエラーハンドリングする基本的な方法
Go言語のスライス・マップ・配列をまとめて比較してみよう!初心者でもわかる使い分けの基本
Go言語の条件分岐の見やすい書き方を徹底解説!初心者でもわかるif文の使い方
Go言語とは何か?初心者向けに特徴・できること・インストール手順までやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.2
Java&Spring記事人気No2
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.3
Java&Spring記事人気No3
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.4
Java&Spring記事人気No4
Kotlinのデータクラス(data class)とは?便利な特徴と使い方を初心者向けにやさしく解説!