Files
lone-services/pkg/utils/my.go
T
gjs be8f89f449
CI / changes (push) Successful in 5s
CI / docker-bff (push) Failing after 7s
CI / docker-product (push) Failing after 5s
CI / docker-admin (push) Failing after 4s
CI / docker-user (push) Failing after 6s
change layout
2026-08-20 15:41:44 +08:00

99 lines
2.4 KiB
Go

package utils
import (
"reflect"
"regexp"
"strings"
jsoniter "github.com/json-iterator/go"
)
const YMDHIS = "2006-01-02 15:04:05"
const YMD = "20060102"
// DeleteExtraSpace 多个空格替换为一个空格
func DeleteExtraSpace(s string) string {
//删除字符串中的多余空格,有多个空格时,仅保留一个空格
s1 := strings.Replace(s, " ", " ", -1) //替换tab为空格
regstr := "\\s{2,}" //两个及两个以上空格的正则表达式
reg, _ := regexp.Compile(regstr) //编译正则表达式
s2 := make([]byte, len(s1)) //定义字符数组切片
copy(s2, s1) //将字符串复制到切片
spcIndex := reg.FindStringIndex(string(s2)) //在字符串中搜索
for len(spcIndex) > 0 { //找到适配项
s2 = append(s2[:spcIndex[0]+1], s2[spcIndex[1]:]...) //删除多余空格
spcIndex = reg.FindStringIndex(string(s2)) //继续在字符串中搜索
}
return string(s2)
}
// GetStructKeys 获取结构体的keys
func GetStructKeys(obj any) []string {
// 通过反射将结构体转换成map
var keys []string
objT := reflect.TypeOf(obj)
for i := 0; i < objT.NumField(); i++ {
fileName, ok := objT.Field(i).Tag.Lookup("json")
if ok {
keys = append(keys, fileName)
} else {
keys = append(keys, objT.Field(i).Name)
}
}
return keys
}
// Struct2map 结构体转map
func Struct2map(obj any) (data map[string]any, err error) {
// 通过反射将结构体转换成map
data = make(map[string]any)
objT := reflect.TypeOf(obj)
objV := reflect.ValueOf(obj)
for i := 0; i < objT.NumField(); i++ {
fileName, ok := objT.Field(i).Tag.Lookup("json")
if objV.Field(i).Interface() == nil {
continue
}
if ok {
data[fileName] = objV.Field(i).Interface()
} else {
data[objT.Field(i).Name] = objV.Field(i).Interface()
}
}
return data, nil
}
func IsString(obj interface{}) bool {
kind := reflect.ValueOf(obj).Kind()
return kind == reflect.String
}
func CheckInArrInt(list []int, val int) {
}
func CheckInStr(list []string, val string) bool {
for _, v := range list {
if v == val {
return true
}
}
return false
}
func JsonToStrArr(jsonStr string) ([]string, error) {
var arr []string
err := jsoniter.Unmarshal([]byte(jsonStr), &arr)
return arr, err
}
func StrToStrArr(jsonStr, sep string) []string {
arr := strings.Split(jsonStr, sep)
return arr
}