// Copyright (c) 2017, A. Stoewer // All rights reserved. package strcase import ( "strings" ) // UpperCamelCase converts a string into camel case starting with a upper case letter. func UpperCamelCase(s string) string { return camelCase(s, true) } // LowerCamelCase converts a string into camel case starting with a lower case letter. func LowerCamelCase(s string) string { return camelCase(s, false) } func camelCase(s string, upper bool) string { s = strings.TrimSpace(s) buffer := make([]rune, 0, len(s)) var prev rune for _, curr := range s { if !isDelimiter(curr) { if isDelimiter(prev) || (upper && prev == 0) { buffer = append(buffer, toUpper(curr)) } else { buffer = append(buffer, toLower(curr)) } } prev = curr } return string(buffer) }