Files

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)
}