我需要创建一个函数,用预定义的唯一替换来替换字符串中单词的占位符。新生成的字符串不应包含重复的替换单词,并且应随机选取它们。假设替换数组包含足够的单词。例子: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 关注
- 106 浏览
添加回答
举报
0/150
提交
取消