From a0b61cd1d5fb9536d42369f2d2b5e37d6046dad5 Mon Sep 17 00:00:00 2001 From: arraykeys Date: Tue, 26 Dec 2023 10:54:42 +0800 Subject: [PATCH] gstrings --- util/strings/strings.go | 24 ++++++++++++++++++++++++ util/strings/strings_test.go | 12 ++++++++++++ 2 files changed, 36 insertions(+) diff --git a/util/strings/strings.go b/util/strings/strings.go index 97f8b2f2..84a0ecae 100644 --- a/util/strings/strings.go +++ b/util/strings/strings.go @@ -31,6 +31,30 @@ func HasSuffixAny(str string, suffix ...string) bool { return false } +func ContainsAny(str string, sub ...string) bool { + if len(sub) == 0 { + return true + } + for _, v := range sub { + if strings.Contains(str, v) { + return true + } + } + return false +} + +func ContainsAll(str string, sub ...string) bool { + if len(sub) == 0 { + return true + } + for _, v := range sub { + if !strings.Contains(str, v) { + return false + } + } + return true +} + func HasHTTPPrefix(str string) bool { return HasPrefixAny(strings.ToLower(str), "http://", "https://") } diff --git a/util/strings/strings_test.go b/util/strings/strings_test.go index d2e970b2..09b21614 100644 --- a/util/strings/strings_test.go +++ b/util/strings/strings_test.go @@ -51,3 +51,15 @@ func TestReplace(t *testing.T) { } } } + +func TestContainsAny(t *testing.T) { + assert.False(t, ContainsAny("abcd", "aa", "aaa", "aaa")) + assert.True(t, ContainsAny("abcd", "ab", "bc", "cde")) + assert.True(t, ContainsAny("abcd")) +} + +func TestContainsAll(t *testing.T) { + assert.False(t, ContainsAll("abcd", "a", "aaa", "aaa")) + assert.True(t, ContainsAll("abcd", "ab", "bc", "cd")) + assert.True(t, ContainsAll("abcd")) +}