diff --git a/utils/str/str.go b/utils/str/str.go index 33e8d7b..9dc2fa2 100644 --- a/utils/str/str.go +++ b/utils/str/str.go @@ -19,11 +19,11 @@ var ( // FirstUpper 首字母大写 func FirstUpper(str string) string { var upperStr string - vv := []rune(str) // 后文有介绍 + vv := []rune(str) for i := 0; i < len(vv); i++ { if i == 0 { - if vv[i] >= 97 && vv[i] <= 122 { // 后文有介绍 - vv[i] -= 32 // string的码表相差32位 + if vv[i] >= 97 && vv[i] <= 122 { + vv[i] -= 32 upperStr += string(vv[i]) } else { return str @@ -34,3 +34,151 @@ func FirstUpper(str string) string { } return upperStr } + +// FirstLower 首字母小写 +func FirstLower(str string) string { + var lowerStr string + vv := []rune(str) + for i := 0; i < len(vv); i++ { + if i == 0 { + if vv[i] >= 65 && vv[i] <= 90 { + vv[i] += 32 + lowerStr += string(vv[i]) + } else { + return str + } + } else { + lowerStr += string(vv[i]) + } + } + return lowerStr +} + +// FirstUpperBytes 首字母大写 +func FirstUpperBytes(str []byte) []byte { + var upperStr []byte + vv := []rune(string(str)) + for i := 0; i < len(vv); i++ { + if i == 0 { + if vv[i] >= 97 && vv[i] <= 122 { + vv[i] -= 32 + upperStr = append(upperStr, string(vv[i])...) + } else { + return str + } + } else { + upperStr = append(upperStr, string(vv[i])...) + } + } + return upperStr +} + +// FirstLowerBytes 首字母小写 +func FirstLowerBytes(str []byte) []byte { + var lowerStr []byte + vv := []rune(string(str)) + for i := 0; i < len(vv); i++ { + if i == 0 { + if vv[i] >= 65 && vv[i] <= 90 { + vv[i] += 32 + lowerStr = append(lowerStr, string(vv[i])...) + } else { + return str + } + } else { + lowerStr = append(lowerStr, string(vv[i])...) + } + } + return lowerStr +} + +// IsEmpty 判断字符串是否为空 +func IsEmpty(str string) bool { + return len(str) == 0 +} + +// IsEmptyBytes 判断字符串是否为空 +func IsEmptyBytes(str []byte) bool { + return len(str) == 0 +} + +// IsNotEmpty 判断字符串是否不为空 +func IsNotEmpty(str string) bool { + return !IsEmpty(str) +} + +// IsNotEmptyBytes 判断字符串是否不为空 +func IsNotEmptyBytes(str []byte) bool { + return !IsEmptyBytes(str) +} + +// SnakeString 蛇形字符串 +func SnakeString(str string) string { + var snakeStr string + vv := []rune(str) + for i := 0; i < len(vv); i++ { + if vv[i] >= 65 && vv[i] <= 90 { + vv[i] += 32 + snakeStr += "_" + string(vv[i]) + } else { + snakeStr += string(vv[i]) + } + } + return snakeStr +} + +// SnakeStringBytes 蛇形字符串 +func SnakeStringBytes(str []byte) []byte { + var snakeStr []byte + vv := []rune(string(str)) + for i := 0; i < len(vv); i++ { + if vv[i] >= 65 && vv[i] <= 90 { + vv[i] += 32 + snakeStr = append(snakeStr, '_') + snakeStr = append(snakeStr, string(vv[i])...) + } else { + snakeStr = append(snakeStr, string(vv[i])...) + } + } + return snakeStr +} + +// CamelString 驼峰字符串 +func CamelString(str string) string { + var camelStr string + vv := []rune(str) + for i := 0; i < len(vv); i++ { + if vv[i] == '_' { + i++ + if vv[i] >= 97 && vv[i] <= 122 { + vv[i] -= 32 + camelStr += string(vv[i]) + } else { + return str + } + } else { + camelStr += string(vv[i]) + } + } + return camelStr +} + +// CamelStringBytes 驼峰字符串 +func CamelStringBytes(str []byte) []byte { + var camelStr []byte + vv := []rune(string(str)) + for i := 0; i < len(vv); i++ { + if vv[i] == '_' { + i++ + if vv[i] >= 97 && vv[i] <= 122 { + vv[i] -= 32 + camelStr = append(camelStr, string(vv[i])...) + } else { + return str + } + } else { + camelStr = append(camelStr, string(vv[i])...) + } + } + return camelStr +}