25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

25 lines
456 B

  1. // Package strcase converts strings to snake_case or CamelCase
  2. package strcase
  3. import (
  4. "strings"
  5. )
  6. // Converts a string to snake_case
  7. func ToSnake(s string) string {
  8. s = addWordBoundariesToNumbers(s)
  9. s = strings.Trim(s, " ")
  10. n := ""
  11. for i, v := range s {
  12. if i > 0 && v >= 'A' && v <= 'Z' && n[len(n)-1] != '_' {
  13. n += "_" + string(v)
  14. } else if v == ' ' {
  15. n += "_"
  16. } else {
  17. n = n + string(v)
  18. }
  19. }
  20. n = strings.ToLower(n)
  21. return n
  22. }