golang regexp具有反向引用的ReplaceAllStrings不太起作用

时间:2015-07-28 14:53:30

标签: regex go

尝试在单词的开头大写每个字母。我知道有strings.Title,但这对我的需求来说太不精确了。

我不确定为什么这不起作用:

package main

import (
    "fmt"
    "regexp"
    "strings"
)

func main() {
    re := regexp.MustCompile(`\b([a-z])`)
    fmt.Println(re.ReplaceAllString("my test string", strings.ToUpper("$1")))

}

https://play.golang.org/p/C-8QG1FrOi

1 个答案:

答案 0 :(得分:3)

您应该使用ReplaceAllStringFunc,例如:

re.ReplaceAllStringFunc("my test string", func(s string) string {
                                          return strings.ToUpper(s)})

见工作demo

您的代码不起作用,因为:

re.ReplaceAllString("my test string", strings.ToUpper("$1"))

与:

相同
re.ReplaceAllString("my test string", "$1")

因为$1的大写字母仍为$1