package strs import "strings" // SnakeString 驼峰转蛇形 func SnakeString(s string) string { data := make([]byte, 0, len(s)*2) j := false num := len(s) for i := 0; i < num; i++ { d := s[i] // or通过ASCII码进行大小写的转化 // 65-90(A-Z),97-122(a-z) //判断如果字母为大写的A-Z就在前面拼接一个_ if i > 0 && d >= 'A' && d <= 'Z' && j { data = append(data, '_') } if d != '_' { j = true } data = append(data, d) } //ToLower把大写字母统一转小写 return strings.ToLower(string(data[:])) } // CamelString 蛇形转驼峰 func CamelString(s string) string { data := make([]byte, 0, len(s)) j := false k := false num := len(s) - 1 for i := 0; i <= num; i++ { d := s[i] if k == false && d >= 'A' && d <= 'Z' { k = true } if d >= 'a' && d <= 'z' && (j || k == false) { d = d - 32 j = false k = true } if k && d == '_' && num > i && s[i+1] >= 'a' && s[i+1] <= 'z' { j = true continue } data = append(data, d) } return string(data[:]) } // LowerInitialLetter 首字母小写 func LowerInitialLetter(s string) string { if s == "" { return s } letters := []rune(s) if letters[0] >= 'A' && letters[0] <= 'Z' { letters[0] += 32 } return string(letters) } // UpperInitialLetter 首字母大写 func UpperInitialLetter(s string) string { if s == "" { return s } letters := []rune(s) if letters[0] >= 'a' && letters[0] <= 'z' { letters[0] -= 32 } return string(letters) }