From f4cc663a517edb13a52fcd028e7b3fcceef080aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=94=E5=AD=90?= Date: Mon, 29 May 2023 15:55:34 +0800 Subject: [PATCH] v1.1.7 --- utils/app.go | 4 +++- utils/unity.go | 29 +++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/utils/app.go b/utils/app.go index db93932..5125792 100644 --- a/utils/app.go +++ b/utils/app.go @@ -74,6 +74,7 @@ func init() { Version.Go = VersionGo Version.Compare = VersionCompare Unity.Ids = UnityIds + Unity.Keys = UnityKeys } var Is struct { @@ -190,5 +191,6 @@ var Version struct { } var Unity struct { - Ids func(param ...any) (result []any) + Ids func(param ...any) (result []any) + Keys func(param any, reg ...any) (result []any) } diff --git a/utils/unity.go b/utils/unity.go index d7fe5fb..6309462 100644 --- a/utils/unity.go +++ b/utils/unity.go @@ -31,3 +31,32 @@ func UnityIds(param ...any) (ids []any) { return ArrayUnique(ArrayEmpty(ids)) } + +// UnityKeys 参数归一化 +func UnityKeys(param any, reg ...any) (keys []any) { + + // 正则表达式 + var regex string + if len(reg) > 0 { + regex = cast.ToString(reg[0]) + } else { + regex = `[^,]+` + } + + if GetType(param) == "string" { + + item := regexp.MustCompile(regex).FindAllString(cast.ToString(param), -1) + + for _, val := range item { + keys = append(keys, val) + } + } + if GetType(param) == "slice" { + item := cast.ToStringSlice(param) + for _, val := range item { + keys = append(keys, val) + } + } + + return ArrayUnique(ArrayEmpty(keys)) +}