tools.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package models
  2. import (
  3. "math/rand"
  4. "strconv"
  5. "strings"
  6. "time"
  7. )
  8. // #取得随机字符串:通过打乱slice来操作
  9. func GetRandstring(length int, char string, rand_x int64) string {
  10. if length < 1 {
  11. return ""
  12. }
  13. if len(char) <= 6 || len(char) <= length {
  14. char = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
  15. }
  16. charArr := strings.Split(char, "")
  17. ran := rand.New(rand.NewSource(time.Now().Unix() + rand_x))
  18. l := len(charArr)
  19. for i := l - 1; i > 0; i-- {
  20. r := ran.Intn(i)
  21. charArr[r], charArr[i] = charArr[i], charArr[r]
  22. }
  23. rchar := charArr[:length]
  24. return strings.Join(rchar, "")
  25. }
  26. func SplitStringIds(str string, prefix string) (r []string) {
  27. Ids_str := strings.TrimRight(str, "|")
  28. Ids := strings.Split(Ids_str, "|")
  29. for _, v := range Ids {
  30. r = append(r, strings.TrimLeft(v, prefix))
  31. }
  32. return r
  33. }
  34. func SplitStringToDotStr(str string, prefix string) (r string) {
  35. Ids_str := strings.TrimRight(str, "|")
  36. Ids := strings.Split(Ids_str, "|")
  37. for _, v := range Ids {
  38. r += strings.TrimLeft(v, prefix) + ","
  39. }
  40. r = strings.TrimRight(r, ",")
  41. return r
  42. }
  43. func SplitStringToIntIds(str string, prefix string) (r []int) {
  44. Ids_str := strings.TrimRight(str, "|")
  45. Ids := strings.Split(Ids_str, "|")
  46. for _, v := range Ids {
  47. id, _ := strconv.Atoi(strings.TrimLeft(v, prefix))
  48. r = append(r, id)
  49. }
  50. return r
  51. }
  52. func IntIdsDistinct(Ids []int) (result []int) {
  53. distinctMap := make(map[int]int, len(Ids))
  54. for _, Id := range Ids {
  55. if _, ok := distinctMap[Id]; !ok {
  56. distinctMap[Id] = 1
  57. result = append(result, Id)
  58. }
  59. }
  60. return result
  61. }