gotygen/pkg/strcase/snake.go

18 lines
337 B
Go

package strcase
import (
"regexp"
"strings"
)
var (
followNonCapRE = regexp.MustCompile(`([a-z\d])([A-Z])`)
followCapRE = regexp.MustCompile(`([A-Z])([A-Z][a-z]+)`)
)
func ToSnake(s string) string {
s = followNonCapRE.ReplaceAllString(s, "${1}_$2")
s = followCapRE.ReplaceAllString(s, "${1}_$2")
return strings.ToLower(s)
}