You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.5 KiB
74 lines
1.5 KiB
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) |
|
}
|
|
|