18 lines
337 B
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)
|
|
}
|