first commit
This commit is contained in:
+97
@@ -0,0 +1,97 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"reflect"
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
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 := json.Unmarshal([]byte(jsonStr), &arr)
|
||||
|
||||
return arr, err
|
||||
}
|
||||
|
||||
func StrToStrArr(jsonStr, sep string) []string {
|
||||
arr := strings.Split(jsonStr, sep)
|
||||
|
||||
return arr
|
||||
}
|
||||
Reference in New Issue
Block a user