mirror of
https://github.com/tangpanqing/aorm.git
synced 2025-09-27 04:16:26 +08:00
57 lines
1.0 KiB
Go
57 lines
1.0 KiB
Go
package utils
|
|
|
|
import (
|
|
"unicode"
|
|
)
|
|
|
|
// 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[:])
|
|
}
|
|
|
|
// Cs 将某字符串转成驼峰写法
|
|
func Cs(s string) string {
|
|
return CamelString(s)
|
|
}
|
|
|
|
// UnderLine 将某字符串转成下划线写法
|
|
func UnderLine(s string) string {
|
|
var output []rune
|
|
for i, r := range s {
|
|
if i == 0 {
|
|
output = append(output, unicode.ToLower(r))
|
|
continue
|
|
}
|
|
if unicode.IsUpper(r) {
|
|
output = append(output, '_')
|
|
}
|
|
output = append(output, unicode.ToLower(r))
|
|
}
|
|
return string(output)
|
|
}
|
|
|
|
// Ul 将某字符串转成下划线写法
|
|
func Ul(s string) string {
|
|
return UnderLine(s)
|
|
}
|