| 1234567891011121314151617181920212223242526272829303132333435 |
- package flect
- import (
- "strings"
- "unicode"
- )
- // Underscore a string
- // bob dylan --> bob_dylan
- // Nice to see you! --> nice_to_see_you
- // widgetID --> widget_id
- func Underscore(s string) string {
- return New(s).Underscore().String()
- }
- // Underscore a string
- // bob dylan --> bob_dylan
- // Nice to see you! --> nice_to_see_you
- // widgetID --> widget_id
- func (i Ident) Underscore() Ident {
- out := make([]string, 0, len(i.Parts))
- for _, part := range i.Parts {
- var x strings.Builder
- x.Grow(len(part))
- for _, c := range part {
- if unicode.IsLetter(c) || unicode.IsDigit(c) {
- x.WriteRune(c)
- }
- }
- if x.Len() > 0 {
- out = append(out, x.String())
- }
- }
- return New(strings.ToLower(strings.Join(out, "_")))
- }
|