Go言語 文字列を置換するサンプル(Replace)

Go言語のReplaceで文字列を置換するサンプルです。

目次

サンプル Replaceとは
  文字列を置き換える(Replace)
  指定した文字を削除する(Replace)
  正規表現で置き換える(ReplaceAllString)
  すべての文字を置き換える(ReplaceAll)

Replaceとは

func Replace(1.文字列, 2.置換前の文字列, 3.置換後の文字列, 4.置き換える回数) string
  • Replaceは対象の文字列を指定した文字列で置き換えます。
  • 1つめの引数は対象の文字列です。
  • 2つめの引数の文字列から3つめの引数の文字列に置き換えます。
  • 4つめの引数は置き換える回数です。-1にすると全て置き換えます。
  • 戻り値はString型です。

文字列を置き換える(Replace)

package main

import (
	"fmt"
	"strings"
)

func main() {
	str1 := "ああーああ"
	fmt.Println(strings.Replace(str1, "あ", "A", 1))  // Aあーああ
	fmt.Println(strings.Replace(str1, "あ", "A", 2))  // AAーああ
	fmt.Println(strings.Replace(str1, "あ", "A", 3))  // AAーAあ
	fmt.Println(strings.Replace(str1, "あ", "A", -1)) // AAーAA

	fmt.Println(strings.Replace(str1, "ああ", "A", 1)) // Aーああ
	fmt.Println(strings.Replace(str1, "ああ", "A", 2)) // AーA
	fmt.Println(strings.Replace(str1, "あ", "AB", 1)) // ABあーああ

	fmt.Println(strings.Replace(str1, "か", "A", 1)) // ああーああ
}

10行目の4つめの引数は1なので1回のみ置き換えす。
13行目の4つめの引数は-1なので全て置き換えます。
15,16行目は2つめの引数が2文字になっています。
17行目は3つめの引数が2文字になっています。
19行目は対象の文字がなかった場合で元の文字列が表示されます。エラーにはなりません。

指定した文字を削除する(Replace)

package main

import (
	"fmt"
	"strings"
)

func main() {
	str1 := "あいうえお"
	fmt.Println(strings.Replace(str1, "う", "", -1)) // あいえお

	// 半角空白あり(△あ△い△う△ +1△△)
	str2 := " あ い う +1  "
	fmt.Println(strings.Replace(str2, " ", "", -1)) // あいう+1
}

10行目は、2つめの引数の文字を削除しています。
14行目は、半角スペースを削除しています。

正規表現で置き換える(ReplaceAllString)

func (re *Regexp) ReplaceAllString(src, repl string) string
package main

import (
	"fmt"
	"regexp"
)

func main() {
	str1 := "ABGC"
	re1 := regexp.MustCompile("[A-C]")
	fmt.Println(re1.ReplaceAllString(str1, "あ")) // ああGあ
}

10行目は、正規表現です。AまたはBまたはCの文字という意味になります。
11行目は、ReplaceAllStringと正規表現で文字列を置き換えています。

すべての文字を置き換える(ReplaceAll)

func ReplaceAll(1.文字列, 2.置換前の文字列, 3.置換後の文字列) string

ReplaceAllはAllの文字があるのでわかりやすくなります。

package main

import (
	"fmt"
	"strings"
)

func main() {
	str1 := "ああーああ"
	fmt.Println(strings.ReplaceAll(str1, "あ", "A")) // AAーAA
}

関連の記事

Go言語 文字列の位置を取得する(Index/LastIndex)
Go言語 文字列の一部を取得する(スライス)

△上に戻る