1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package util
- import (
- "crypto/md5"
- "encoding/hex"
- "io"
- "strings"
- "encoding/base64"
- "fmt"
- "crypto/rand"
- )
- //生成32位md5字串
- func GetMd5String(s string) string {
- h := md5.New()
- h.Write([]byte(s))
- return hex.EncodeToString(h.Sum(nil))
- }
- //生成Guid字串
- func UUIDString() string {
- b := make([]byte, 48)
- if _, err := io.ReadFull(rand.Reader, b); err != nil {
- return ""
- }
- return strings.ToUpper(GetMd5String(base64.URLEncoding.EncodeToString(b)))
- }
- func UUID() string {
- uuid := UUIDString()
- if "" == uuid {
- return ""
- }
- return fmt.Sprintf("%v-%v-%v-%v-%v", uuid[0:8], uuid[8:12], uuid[12:16], uuid[16:20], uuid[20:])
- }
- // TrimAryStringRepeat trim the s in every string in strs,
- // repeat is decide result string array whether allowed repeat,
- // false is don't allowed
- func TrimAryStringRepeat(strs []string, s string, repeat bool) []string {
- var strMap = map[string]bool{}
- var results = []string{}
- for _, str := range strs {
- val := strings.Trim(str, s)
- if len(val) < 1 {
- continue
- }
- if strMap[val] && !repeat {
- continue
- }
- strMap[val] = true
- results = append(results, val)
- }
- return results
- }
- // TrimAryInt trim the same int value in vals or which value equal to arg
- func TrimAryInt(vals []int, arg int) []int {
- var intMap = map[int]bool{}
- var result = []int{}
- for _, val := range vals {
- if intMap[val] {
- continue
- }
- intMap[val] = true
- result = append(result, val)
- }
- return result
- }
- // TrimAryInt trim the same int value int vals
- func TrimAryIntRepeat(vals []int) []int {
- var intMap = map[int]bool{}
- var result = []int{}
- for _, val := range vals {
- if intMap[val] {
- continue
- }
- intMap[val] = true
- result = append(result, val)
- }
- return result
- }
|