123456789101112131415161718192021222324252627282930313233343536373839 |
- package rest
- import (
- "bytes"
- "strings"
- "unicode"
- )
- // CamelToSnake преобразует строку из CamelCase в snake_case.
- func CamelToSnake(s string) string {
- var result bytes.Buffer
- var lastIndex int = 0
- for i, char := range s {
- if i > 0 && unicode.IsUpper(char) && ((i+1 < len(s) && unicode.IsLower(rune(s[i+1]))) || unicode.IsLower(rune(s[i-1]))) {
- result.WriteString(strings.ToLower(s[lastIndex:i]))
- if lastIndex != i {
- result.WriteString("_")
- }
- lastIndex = i
- }
- }
- result.WriteString(strings.ToLower(s[lastIndex:]))
- return result.String()
- }
- // SnakeToCamel преобразует строку из snake_case в CamelCase.
- func SnakeToCamel(s string) string {
- var result string
- words := strings.Split(s, "_")
- for _, word := range words {
- w := strings.Title(word)
- result += w
- }
- return result
- }
|