package kata import ( "fmt" "strings" "unicode" ) func ToCamelCase(s string) string { // Only handle the underscore case. u := strings.ReplaceAll(s, `-`, `_`) fmt.Println("Checking", u) res := make([]rune, 0, len(u)) atFirst := true atInitial := true for _, r := range u { fmt.Printf("%c: ", r) if r == '_' { fmt.Println("Skipping _, setting Initial") atInitial = true continue } if atFirst { fmt.Println("First") res = append(res, r) atFirst = false atInitial = false continue } else if atInitial { fmt.Println("atInitial") res = append(res, unicode.ToUpper(r)) } else { fmt.Println("not") res = append(res, r) } atInitial = false } return string(res) }