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

Go言語の文字列置換を完全ガイド!Replace関数で簡単に操作する方法

Go言語の文字列の置換(Replace)を使った操作例
Go言語の文字列の置換(Replace)を使った操作例

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

生徒

「Go言語で文章の中の特定の言葉を別の言葉に置き換えることってできますか?」

先生

「はい、できますよ。Go言語ではstringsパッケージに含まれているReplace関数を使えば、簡単に文字列の置換が可能です。」

生徒

「具体的にはどうやって書くんですか?」

先生

「それでは、Replaceの基本的な使い方から一緒に見ていきましょう!」

1. Replace関数とは?

1. Replace関数とは?
1. Replace関数とは?

Replace関数は、文字列の中にある特定の部分を別の文字列に置き換えるための関数です。例えば、「りんご」を「みかん」に変える、といった操作ができます。

置換というのは「元の言葉を探して新しい言葉に取り替える」ことです。日常で例えるなら、文章中の「赤ペンで書かれた文字を青ペンに書き直す」といったイメージです。

2. Replace関数の基本的な書き方

2. Replace関数の基本的な書き方
2. Replace関数の基本的な書き方

strings.Replaceの書き方は以下のとおりです。

  • 第1引数:元の文字列
  • 第2引数:探す文字列
  • 第3引数:置き換える文字列
  • 第4引数:置換する回数(-1を指定するとすべて置換)

package main

import (
    "fmt"
    "strings"
)

func main() {
    text := "私はりんごが好きです。りんごは美味しいです。"
    replaced := strings.Replace(text, "りんご", "みかん", -1)
    fmt.Println(replaced)
}

私はみかんが好きです。みかんは美味しいです。

このように、-1を指定するとすべての「りんご」が「みかん」に置き換わります。

3. 置換する回数を指定する

3. 置換する回数を指定する
3. 置換する回数を指定する

Replaceの第4引数で置換する回数を指定できます。1を指定すれば最初の1つだけ、2を指定すれば最初の2つだけ置き換えます。


package main

import (
    "fmt"
    "strings"
)

func main() {
    text := "りんご、りんご、りんご"
    replaced := strings.Replace(text, "りんご", "みかん", 1)
    fmt.Println(replaced)
}

みかん、りんご、りんご

この例では、最初の「りんご」だけが「みかん」に変わっています。

4. ReplaceとReplaceAllの違い

4. ReplaceとReplaceAllの違い
4. ReplaceとReplaceAllの違い

Go1.12以降では、strings.ReplaceAllという便利な関数も追加されています。これはReplaceの第4引数に-1を指定したのと同じ動きをする関数で、「すべて置換する」という目的専用です。


package main

import (
    "fmt"
    "strings"
)

func main() {
    text := "Goは楽しい。Goをもっと学びたい。"
    replaced := strings.ReplaceAll(text, "Go", "Golang")
    fmt.Println(replaced)
}

Golangは楽しい。Golangをもっと学びたい。

ReplaceAllを使うことで「すべて置換」の意図が明確になり、コードの読みやすさも向上します。

5. 実践的な活用例

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

5-1. 禁止ワードの置き換え

掲示板やチャットアプリでは、不適切な言葉を別の記号に置き換える処理が必要になる場合があります。


package main

import (
    "fmt"
    "strings"
)

func main() {
    text := "この商品は最悪だ!"
    replaced := strings.ReplaceAll(text, "最悪", "***")
    fmt.Println(replaced)
}

この商品は***だ!

5-2. データのフォーマット変換

たとえば、カンマ区切りの文字列をタブ区切りに変換する場合にもReplaceAllは役立ちます。


package main

import (
    "fmt"
    "strings"
)

func main() {
    csv := "A,B,C,D"
    tsv := strings.ReplaceAll(csv, ",", "\t")
    fmt.Println(tsv)
}

A	B	C	D

6. 注意点とエラー回避

6. 注意点とエラー回避
6. 注意点とエラー回避

ReplaceReplaceAllは、元の文字列を直接変更するわけではなく、新しい文字列を返します。つまり、元の文字列はそのまま残ります。この点を理解しておかないと、「置換したのに変わっていない」という勘違いをすることがあります。

また、置換する対象の文字列が見つからなければ、そのまま返されます。エラーにはならないので安心ですが、「置き換わらないのはなぜ?」と混乱しないように確認しましょう。

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