25 lines
581 B
Go
25 lines
581 B
Go
package utils
|
|
|
|
import "strings"
|
|
|
|
func ToTitleCase(name string) string {
|
|
words := strings.Fields(name)
|
|
for i, word := range words {
|
|
if len(word) > 0 {
|
|
// Handle hyphenated names
|
|
if strings.Contains(word, "-") {
|
|
parts := strings.Split(word, "-")
|
|
for j, part := range parts {
|
|
if len(part) > 0 {
|
|
parts[j] = strings.ToUpper(string(part[0])) + strings.ToLower(part[1:])
|
|
}
|
|
}
|
|
words[i] = strings.Join(parts, "-")
|
|
} else {
|
|
words[i] = strings.ToUpper(string(word[0])) + strings.ToLower(word[1:])
|
|
}
|
|
}
|
|
}
|
|
return strings.Join(words, " ")
|
|
}
|