便利な関数があったのでメモ
「sample text」を全部*で置換したい、ただ文字数を同じにしたい等で使えます。(こんなユースケースあるんだろうか)
検索してよく出てくる関数はReplaceAllStringで、置換するワードが第2引数に渡した値になります。
replaceAllStringFuncは2つめに関数を渡すことができ、マッチした文字をその関数に渡してもらえるので、
処理してから置き換える文字を変更することができます。
以下がサンプル
package main import ( "fmt" "regexp" "strings" ) func main() { str := "「正規表現によるマッチ」を意味する(専用の)演算子がある言語なども一部ある。" regx := regexp.MustCompile(`「(.*?)」`) repStr := func(str string) string { runeStr := []rune(str) lenRuneStr := len(runeStr) return strings.Repeat("*", lenRuneStr) } matches := regx.ReplaceAllStringFunc( str, repStr, ) fmt.Println(matches) }
動作チェックは以下のリンク先でできます。
Go言語は結構funcを渡せる関数があるので、いいですね!
ではでは〜