我是 Go 的初学者。 我不知道如何不仅替换符号,而且使 Go 中的下一个字母大写。
任务: 完成方法/函数,以便将破折号/下划线分隔的单词转换为驼峰式大小写。仅当原始单词大写时,输出中的第一个单词才应大写(称为大驼峰式命名法,也通常称为帕斯卡大小写)。
我尝试使用以下方法实现正则表达式方法:
re, _ := regexp.Compile(`/[-_]\w/ig`)
res := re.FindAllStringSubmatch(s, -1)
return res
但是我无法返回 res,因为它是 slice/数组,但我只需要返回字符串。
我的代码:
package main
import (
"fmt"
"strings"
)
func ToCamelCase(s string) string {
s = strings.ReplaceAll(s, "-", "")
s = strings.ReplaceAll(s, "_", "")
return s
}
func main() {
var s string
fmt.Scan(&s)
fmt.Println(ToCamelCase(s))
}
输入: “the-stealth-warrior”或“the_stealth_warrior”
输出: “theStealthWarrior”或“TheStealthWarrior”
我的输出:thestealthwarrior
最佳答案
Go字符串中需要定义不带正则分隔符的正则表达式,使用 ReplaceAllStringFunc
function 更方便:
package main
import (
"fmt"
"regexp"
"strings"
)
func ToCamelCase(s string) string {
re, _ := regexp.Compile(`[-_]\w`)
res := re.ReplaceAllStringFunc(s, func(m string) string {
return strings.ToUpper(m[1:])
})
return res
}
func main() {
s := "the-stealth-warrior"
fmt.Println(ToCamelCase(s))
}
请参阅Go playground .
输出是theStealthWarrior
。
[-_]\w
模式匹配 -
或 _
,然后匹配任何单词字符。如果您想从 \w
中排除 _
,请使用 [^\W_]
而不是 \w
。
关于regex - 如何在 Go 中替换符号并使下一个字母大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73305148/