【Go】文字列を一部置換と全置換する方法


準備

文字列の置換にはstringsと言うpackageを使用する為、まずはimportを行います。
https://golang.org/pkg/strings/

import
import "strings"
// 以下でも良い
import ("strings")

特定の数のみ置換したい場合

1つだけ置換したい場合や2つなど複数置換したい場合は、replace関数を使います。

軽く説明

func Replace(s, old, new string, n int) string

第1引数:置換したい文字列
第2引数:置換前の値
第3引数:置換後の値
第4引数:置換したい数(int型)
返り値:置換された結果の文字列
(stringsのReplace関数なのでstrings.Replace()と言う使い方)

具体例

一部置換
var title string = "SSSS.GRIDMAN"
fmt.Println(title) // => SSSS.GRIDMAN

// 1つのみ置換
oneReplace := strings.Replace(title, "S", "X", 1)
fmt.Println(oneReplace) // => XSSS.GRIDMAN

// 複数置換
multipleReplace := strings.Replace(title, "S", "X", 3)
fmt.Println(multipleReplace) // => XXXS.GRIDMAN

全て置換したい場合

ドキュメントのReplace関数部分に

If n < 0, there is no limit on the number of replacements.

と言う記述があります。
つまり、replace関数第4引数が0未満だったら制限がない(=全置換)と言うことですね。

具体例

全置換
var title string = "SSSS.GRIDMAN"
fmt.Println(title) // => SSSS.GRIDMAN

allReplace := strings.Replace(title, "S", "X", -1) // -2でも-100でもOK
fmt.Println(allReplace) // => XXXX.GRIDMAN

もしくはreplaceAll関数と言うのもあります。

軽く説明

func ReplaceAll(s, old, new string) string

第1引数:置換したい文字列
第2引数:置換前の値
第3引数:置換後の値
返り値:置換された結果の文字列
strings.ReplaceAll()と言う使い方)

具体例

全置換
var title string = "SSSS.GRIDMAN"
fmt.Println(title) // => SSSS.GRIDMAN

allReplace := strings.ReplaceAll(title, "S", "X")
fmt.Println(allReplace) // => XXXX.GRIDMAN