light-core/util/string.go
2024-12-17 22:28:48 +08:00

105 lines
1.8 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package util
import (
"strconv"
"strings"
"unicode"
)
//判断是否是数字字符串
func IsDigit(str string) bool {
for _, x := range []rune(str) {
if !unicode.IsDigit(x) {
return false
}
}
return true
}
func Atoi(i string) int {
if i == "" {
return 0
}
j, err := strconv.Atoi(i)
if err != nil {
return 0
} else {
return j
}
}
func StringToInt(s interface{}) int {
switch i := s.(type) {
case string:
return Atoi(i)
case float32:
return int(i)
case float64:
return int(i)
case int:
return i
case uint:
return int(i)
}
return 0
}
/**
* 驼峰转蛇形 snake string
* @description XxYy to xx_yy , XxYY to xx_y_y
* @date 2020/7/30
* @param s 需要转换的字符串
* @return string
**/
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-90A-Z97-122a-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[:]))
}
/**
* 蛇形转驼峰
* @description xx_yy to XxYx xx_y_y to XxYY
* @date 2020/7/30
* @param s要转换的字符串
* @return string
**/
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[:])
}