为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
墨色风雨 2023-08-14 16:22:28
我需要创建一个函数,用预定义的唯一替换来替换字符串中单词的占位符。新生成的字符串不应包含重复的替换单词,并且应随机选取它们。假设替换数组包含足够的单词。例子: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.Shuffleshufflereplacement然后将其中的内容逐一使用。

例如:

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


查看完整回答
反对 回复 2023-08-14
  • 1 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信