0

对于像“AA_BB_CC”这样的字符串,我想把它变成“AaBbCc”。我以为我可以这样做:

func CapsToCamel() string {
  var buf bytes.Buffer
  s := "AA_BB_CC"
  toUpper := true
  for i :=0; i<len(s); i++ {
    if toUpper {
       buf.WriteString(strings.ToUpper(s[i])) // error: s[i] is of byte.
    ...
}

我停在那里,虽然我可以将每个s[i]视为 ASCII 字符,然后将其值与aand进行比较z,但我认为应该有一个 Go 方法来做到这一点。

4

1 回答 1

0

这是一个更清洁的工作解决方案,仅使用strings包而不必依赖使用bytes.Buffer.

func CapsToCamel(s string) string {
    newstr := ""
    str := []byte(strings.Join(strings.Split(s, "_"), ""))

    for i := 0; i < len(str); i += 2 {
        newstr += string(str[i])
        newstr += strings.ToLower(string(str[i]))
    }
    return newstr
}

操场上也有一个简单的例子:https: //play.golang.org/p/1YIeTlr8a6D

于 2020-09-24T03:18:43.210 回答