From 2b15311f1ec6ba1cd52f70435cf1768d46341c20 Mon Sep 17 00:00:00 2001 From: pyihe <785131182@qq.com> Date: Fri, 5 Aug 2022 16:20:14 +0800 Subject: [PATCH] feature(strings): add Func --- strings/strings.go | 87 +++++++++++++++------------------ strings/strings_unexportable.go | 21 ++++++++ 2 files changed, 60 insertions(+), 48 deletions(-) create mode 100644 strings/strings_unexportable.go diff --git a/strings/strings.go b/strings/strings.go index 59dc2e4..23f4629 100644 --- a/strings/strings.go +++ b/strings/strings.go @@ -174,38 +174,6 @@ func MaxSubStrLen(str string) int { return maxLen } -// FilterRepeatBySlice 元素去重 -func FilterRepeatBySlice(slc []string) []string { - var result []string - for i := range slc { - flag := true - for j := range result { - if slc[i] == result[j] { - flag = false - break - } - } - if flag { - result = append(result, slc[i]) - } - } - return result -} - -// FilterRepeatByMap 通过map元素去重 -func FilterRepeatByMap(slc []string) []string { - var result []string - tempMap := make(map[string]byte, 0) - for _, e := range slc { - l := len(tempMap) - tempMap[e] = 0 - if len(tempMap) != l { - result = append(result, e) - } - } - return result -} - func ToLower(s string) string { if isLower(s) { return s @@ -221,16 +189,6 @@ func ToLower(s string) string { return bytes.String(b) } -func isLower(s string) bool { - for i := range s { - c := s[i] - if c >= 'A' && c <= 'Z' { - return false - } - } - return true -} - func ToUpper(s string) string { if isUpper(s) { return s @@ -246,12 +204,45 @@ func ToUpper(s string) string { return bytes.String(b) } -func isUpper(s string) bool { - for i := range s { - c := s[i] - if c >= 'a' && c <= 'z' { - return false +func Add(s []string, a string) []string { + return append(s, a) +} + +func AddWithDistinct(s []string, a string) []string { + for _, e := range s { + if e == a { + return s } } - return true + return Add(s, a) +} + +func Union(s []string, a []string) []string { + for _, ae := range a { + found := false + for _, se := range s { + if ae == se { + found = true + break + } + } + if !found { + s = append(s, ae) + } + } + return s +} + +// Unique 字符串切片去重 +func Unique(s []string) (r []string) { +loop: + for _, se := range s { + for _, rv := range r { + if se == rv { + continue loop + } + } + r = append(r, se) + } + return } diff --git a/strings/strings_unexportable.go b/strings/strings_unexportable.go new file mode 100644 index 0000000..0d98a9e --- /dev/null +++ b/strings/strings_unexportable.go @@ -0,0 +1,21 @@ +package strings + +func isUpper(s string) bool { + for i := range s { + c := s[i] + if c >= 'a' && c <= 'z' { + return false + } + } + return true +} + +func isLower(s string) bool { + for i := range s { + c := s[i] + if c >= 'A' && c <= 'Z' { + return false + } + } + return true +}