我需要創建一個函數,用預定義的唯一替換來替換字符串中單詞的占位符。新生成的字符串不應包含重復的替換單詞,并且應隨機選取它們。假設替換數組包含足夠的單詞。例子:replacement := []string{"Cat", "Dog"}s := "{replacement} text {replacement}"result := "Cat text Dog"我正在考慮做這樣的事情:當單詞包含替換占位符時,會選擇一個隨機的唯一替換單詞并將其替換為所選單詞。繼續上述操作,直到所有替換占位符都被替換為替換。
1 回答

鴻蒙傳說
TA貢獻1865條經驗 獲得超7個贊
標準包regexp
有一個*Regexp.ReplaceAllStringFunc
專門用于此目的:
來自文檔:
ReplaceAllStringFunc 返回 src 的副本,其中 Regexp 的所有匹配項均已替換為應用于匹配子字符串的函數 repl 的返回值。repl返回的替換是直接替換的,沒有使用Expand。
如果要替換而不需要重復替換,可以使用rand.Shuffle
shufflereplacement
然后將其中的內容逐一使用。
例如:
rand.Shuffle(len(rep), reflect.Swapper(rep))
var err error
res := pattern.ReplaceAllStringFunc(s, func(x string) string {
if len(rep) == 0 {
err = errors.New("Not enough replacements for string.")
return "<not enough replacement>"
}
s, rep = rep[0], rep[1:]
return s
})
游樂場:https ://play.golang.org/p/_FuFqT5rHJc
- 1 回答
- 0 關注
- 150 瀏覽
添加回答
舉報
0/150
提交
取消