如何用随机替换单词有效地替换字符串中的单词?

我需要创建一个函数,用预定义的唯一替换来替换字符串中单词的占位符。新生成的字符串不应包含重复的替换单词,并且应随机选取它们。假设替换数组包含足够的单词。例子:


replacement := []string{"Cat", "Dog"}

s := "{replacement} text {replacement}"

result := "Cat text Dog"

我正在考虑做这样的事情:

  1. 当单词包含替换占位符时,会选择一个随机的唯一替换单词并将其替换为所选单词。

  2. 继续上述操作,直到所有替换占位符都被替换为替换。


墨色风雨
浏览 107回答 1
1回答

鸿蒙传说

标准包regexp有一个*Regexp.ReplaceAllStringFunc专门用于此目的:来自文档:ReplaceAllStringFunc 返回 src 的副本,其中 Regexp 的所有匹配项均已替换为应用于匹配子字符串的函数 repl 的返回值。repl返回的替换是直接替换的,没有使用Expand。如果要替换而不需要重复替换,可以使用rand.Shuffleshufflereplacement然后将其中的内容逐一使用。例如:rand.Shuffle(len(rep), reflect.Swapper(rep))var err errorres := pattern.ReplaceAllStringFunc(s, func(x string) string {&nbsp; &nbsp; if len(rep) == 0 {&nbsp; &nbsp; &nbsp; &nbsp; err = errors.New("Not enough replacements for string.")&nbsp; &nbsp; &nbsp; &nbsp; return "<not enough replacement>"&nbsp; &nbsp; }&nbsp; &nbsp; s, rep = rep[0], rep[1:]&nbsp; &nbsp; return s})游乐场:https ://play.golang.org/p/_FuFqT5rHJc
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go