2 回答
TA贡献1873条经验 获得超9个赞
你需要这样的东西
r, i := regexp.MustCompile("Let freedom"), 0
r.ReplaceAllStringFunc(input, func(m string) string {
i += 1
if i == 1 {
return "[1]" + m
}
return fmt.Sprintf("[%d] %s%d", i, m, i)
})
确保您已导入所需的包。以上通过Let freedom用作正则表达式然后使用一些条件返回预期的内容来工作。
TA贡献1775条经验 获得超11个赞
您需要以某种方式在对函数的连续调用之间共享计数器。一种方法是构造闭包。你可以这样做:
package main
import (
"fmt"
"regexp"
)
func main() {
str := "Let freedom ring from the mighty mountains of New York. Let freedom ring from the heightening Alleghenies of Pennsylvania. Let freedom ring from the snow-capped Rockies of Colorado. Let freedom ring from the curvaceous slopes of California."
counter := 1
repl := func(match string) string {
old := counter
counter++
if old != 1 {
return fmt.Sprintf("[%d] %s%d", old, match, old)
}
return fmt.Sprintf("[%d] %s", old, match)
}
re := regexp.MustCompile("Let freedom")
str2 := re.ReplaceAllStringFunc(str, repl)
fmt.Println(str2)
}
- 2 回答
- 0 关注
- 204 浏览
添加回答
举报