str.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package common
  2. import (
  3. "encoding/base64"
  4. "encoding/json"
  5. "math/rand"
  6. "strconv"
  7. "unsafe"
  8. )
  9. func GetStringIfEmpty(str string, defaultValue string) string {
  10. if str == "" {
  11. return defaultValue
  12. }
  13. return str
  14. }
  15. func GetRandomString(length int) string {
  16. //rand.Seed(time.Now().UnixNano())
  17. key := make([]byte, length)
  18. for i := 0; i < length; i++ {
  19. key[i] = keyChars[rand.Intn(len(keyChars))]
  20. }
  21. return string(key)
  22. }
  23. func MapToJsonStr(m map[string]interface{}) string {
  24. bytes, err := json.Marshal(m)
  25. if err != nil {
  26. return ""
  27. }
  28. return string(bytes)
  29. }
  30. func StrToMap(str string) (map[string]interface{}, error) {
  31. m := make(map[string]interface{})
  32. err := Unmarshal([]byte(str), &m)
  33. if err != nil {
  34. return nil, err
  35. }
  36. return m, nil
  37. }
  38. func StrToJsonArray(str string) ([]interface{}, error) {
  39. var js []interface{}
  40. err := json.Unmarshal([]byte(str), &js)
  41. if err != nil {
  42. return nil, err
  43. }
  44. return js, nil
  45. }
  46. func IsJsonArray(str string) bool {
  47. var js []interface{}
  48. return json.Unmarshal([]byte(str), &js) == nil
  49. }
  50. func IsJsonObject(str string) bool {
  51. var js map[string]interface{}
  52. return json.Unmarshal([]byte(str), &js) == nil
  53. }
  54. func String2Int(str string) int {
  55. num, err := strconv.Atoi(str)
  56. if err != nil {
  57. return 0
  58. }
  59. return num
  60. }
  61. func StringsContains(strs []string, str string) bool {
  62. for _, s := range strs {
  63. if s == str {
  64. return true
  65. }
  66. }
  67. return false
  68. }
  69. // StringToByteSlice []byte only read, panic on append
  70. func StringToByteSlice(s string) []byte {
  71. tmp1 := (*[2]uintptr)(unsafe.Pointer(&s))
  72. tmp2 := [3]uintptr{tmp1[0], tmp1[1], tmp1[1]}
  73. return *(*[]byte)(unsafe.Pointer(&tmp2))
  74. }
  75. func EncodeBase64(str string) string {
  76. return base64.StdEncoding.EncodeToString([]byte(str))
  77. }
  78. func GetJsonString(data any) string {
  79. if data == nil {
  80. return ""
  81. }
  82. b, _ := json.Marshal(data)
  83. return string(b)
  84. }