mirror of
https://gitee.com/XM-GO/PandaX.git
synced 2026-04-23 02:48:34 +08:00
86 lines
1.7 KiB
Go
86 lines
1.7 KiB
Go
package tool
|
|
|
|
import (
|
|
"reflect"
|
|
"regexp"
|
|
"strings"
|
|
)
|
|
|
|
func ToCamelCase(s string) string {
|
|
re := regexp.MustCompile(`[_\W]+`)
|
|
words := re.Split(s, -1)
|
|
for i := range words {
|
|
if i != 0 {
|
|
words[i] = strings.Title(words[i])
|
|
}
|
|
}
|
|
return strings.Join(words, "")
|
|
}
|
|
|
|
func RegexpKey(str string) []string {
|
|
// 定义正则表达式
|
|
re := regexp.MustCompile(`\${([^}]+)}`)
|
|
matches := re.FindAllStringSubmatch(str, -1)
|
|
// 提取匹配项的内容
|
|
var results []string
|
|
for _, match := range matches {
|
|
if len(match) >= 2 {
|
|
results = append(results, match[1])
|
|
}
|
|
}
|
|
return results
|
|
}
|
|
|
|
func RegexpGetSql(str string) string {
|
|
// 定义正则表达式
|
|
re := regexp.MustCompile(`\${([^}]+)}`)
|
|
return re.ReplaceAllString(str, "?")
|
|
}
|
|
|
|
func GetStructKeys(obj interface{}) []string {
|
|
val := reflect.ValueOf(obj)
|
|
typ := val.Type()
|
|
|
|
keys := make([]string, 0, typ.NumField())
|
|
|
|
for i := 0; i < typ.NumField(); i++ {
|
|
field := typ.Field(i)
|
|
keys = append(keys, field.Name)
|
|
}
|
|
|
|
return keys
|
|
}
|
|
|
|
func GetMapKeys(obj map[string]interface{}) []string {
|
|
keys := make([]string, 0, len(obj))
|
|
|
|
for key := range obj {
|
|
keys = append(keys, key)
|
|
}
|
|
|
|
return keys
|
|
}
|
|
|
|
func CheckInterfaceIsArray(data interface{}) (bool, []map[string]interface{}) {
|
|
if data == nil {
|
|
return false, nil
|
|
}
|
|
valueType := reflect.TypeOf(data)
|
|
// 判断类型是否为数组或切片
|
|
if valueType.Kind() == reflect.Slice || valueType.Kind() == reflect.Array {
|
|
var maps []map[string]interface{}
|
|
for _, item := range data.([]interface{}) {
|
|
if m, ok := item.(map[string]interface{}); ok {
|
|
maps = append(maps, m)
|
|
}
|
|
}
|
|
return true, maps
|
|
}
|
|
return false, nil
|
|
}
|
|
|
|
func GetInterfaceType(v interface{}) string {
|
|
interfaceType := reflect.TypeOf(v)
|
|
return interfaceType.String()
|
|
}
|