95 lines
1.7 KiB
Go
95 lines
1.7 KiB
Go
package utils
|
|
|
|
import (
|
|
"fmt"
|
|
"net/url"
|
|
"strings"
|
|
)
|
|
|
|
func AddQueryToURL(urlStr string, queryMap map[string]string) string {
|
|
u, _ := url.Parse(urlStr)
|
|
|
|
q, _ := url.ParseQuery(u.RawQuery)
|
|
for k, v := range queryMap {
|
|
q.Add(k, v)
|
|
}
|
|
|
|
u.RawQuery = q.Encode()
|
|
return u.String()
|
|
}
|
|
|
|
// ContainsStr returns true if an str is present in a iteratee.
|
|
func ContainsStr(s []string, v string) bool {
|
|
for _, vv := range s {
|
|
if vv == v {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
// RemoveDuplicates removes the duplicates strings from a Slice
|
|
func RemoveDuplicates(arr []string) []string {
|
|
allKeys := make(map[string]bool)
|
|
list := []string{}
|
|
for _, item := range arr {
|
|
if _, value := allKeys[item]; !value {
|
|
allKeys[item] = true
|
|
list = append(list, item)
|
|
}
|
|
}
|
|
return list
|
|
}
|
|
|
|
func SplitAndTrimSpace(s string, sep string) []string {
|
|
split := strings.Split(s, sep)
|
|
arr := []string{}
|
|
for _, v := range split {
|
|
arr = append(arr, strings.TrimSpace(v))
|
|
}
|
|
return RemoveBlankStrings(arr)
|
|
}
|
|
|
|
func RemoveBlankStrings(s []string) []string {
|
|
r := []string{}
|
|
for _, str := range s {
|
|
if strings.TrimSpace(str) != "" {
|
|
r = append(r, str)
|
|
}
|
|
}
|
|
return r
|
|
}
|
|
|
|
func TruncateString(str string, length int) string {
|
|
if length <= 0 {
|
|
return ""
|
|
}
|
|
|
|
// This code cannot support Chinese
|
|
// orgLen := len(str)
|
|
// if orgLen <= length {
|
|
// return str
|
|
// }
|
|
// return str[:length]
|
|
|
|
// Support Chinese
|
|
truncated := ""
|
|
count := 0
|
|
for _, char := range str {
|
|
truncated += string(char)
|
|
count++
|
|
if count >= length {
|
|
break
|
|
}
|
|
}
|
|
return truncated
|
|
}
|
|
|
|
// 任何类型转 String
|
|
//
|
|
// (bool) true => (string) "true"
|
|
// (int) 0 => (string) "0"
|
|
func ToString(val interface{}) string {
|
|
return fmt.Sprintf("%v", val)
|
|
}
|