utils.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package utils
  2. import (
  3. "flag"
  4. "fmt"
  5. "math/rand"
  6. "os"
  7. "strings"
  8. "time"
  9. "unicode"
  10. )
  11. //IsFlagPassed 判断字符串全是数字
  12. func IsDigit(str string) bool {
  13. for _, x := range []rune(str) {
  14. if !unicode.IsDigit(x) {
  15. return false
  16. }
  17. }
  18. return true
  19. }
  20. //IsFlagPassed 判断是否设置了指定 flag
  21. func IsFlagPassed(name string) bool {
  22. found := false
  23. flag.Visit(func(f *flag.Flag) {
  24. if f.Name == name {
  25. found = true
  26. }
  27. })
  28. return found
  29. }
  30. //NumberOrStringToBool 字符串 1, yes 返回 true 否则 false
  31. func NumberOrStringToBool(input string) bool {
  32. if input == "1" {
  33. return true
  34. }
  35. if input == "yes" {
  36. return true
  37. }
  38. return false
  39. }
  40. //NumberToBool 大于0 返回 true 否则 false
  41. func NumberToBool(input int) bool {
  42. if input > 0 {
  43. return true
  44. } else {
  45. return false
  46. }
  47. }
  48. //Bool to int true 返回 1 否则 0
  49. func BoolToInt(input bool) int {
  50. var output int
  51. if input {
  52. output = 1
  53. } else {
  54. output = 0
  55. }
  56. return output
  57. }
  58. //BoolToNumber true 返回 "1" false 返回 "0"
  59. func BoolToNumber(input bool) string {
  60. if input {
  61. return "1"
  62. }
  63. return "0"
  64. }
  65. //BoolToString true 返回 "yes" false 返回 "no"
  66. func BoolToString(input bool) string {
  67. if input {
  68. return "yes"
  69. }
  70. return "no"
  71. }
  72. //YesToOn Yes 或 yes 返回 "on" 否则返回 "off"
  73. // 会议 Muted 的值可能是 By admin
  74. func YesToOn(input string) string {
  75. if input == "Yes" || input == "yes" || strings.Contains(input, "By") {
  76. return "on"
  77. }
  78. return "off"
  79. }
  80. //GetRandStr 生成随机密码
  81. func GetRandStr(baseStr string, length int) string {
  82. r := rand.New(rand.NewSource(time.Now().UnixNano() + rand.Int63()))
  83. bytes := make([]byte, length)
  84. l := len(baseStr)
  85. for i := 0; i < length; i++ {
  86. bytes[i] = baseStr[r.Intn(l)]
  87. }
  88. return string(bytes)
  89. }
  90. //SqlLike sql like 头尾添加 %%
  91. func SqlLike(input string) string {
  92. return fmt.Sprintf("%%%s%%", input)
  93. }
  94. // IsChannel 判断输入是否是 Channel
  95. func IsChannel(input string) bool {
  96. if strings.Contains(input, "SIP") {
  97. return true
  98. }
  99. if strings.Contains(input, "Local") {
  100. return true
  101. }
  102. if strings.Contains(input, "DAHDI") {
  103. return true
  104. }
  105. return false
  106. }
  107. //判断文件是否存在
  108. func PathExists(path string) bool {
  109. _, err := os.Stat(path)
  110. if err == nil {
  111. return true
  112. }
  113. if os.IsNotExist(err) {
  114. return false
  115. }
  116. return false
  117. }
  118. // 数组去重
  119. func RemoveDuplication(arr []string) []string {
  120. set := make(map[string]struct{}, len(arr))
  121. j := 0
  122. for _, v := range arr {
  123. _, ok := set[v]
  124. if ok {
  125. continue
  126. }
  127. set[v] = struct{}{}
  128. arr[j] = v
  129. j++
  130. }
  131. return arr[:j]
  132. }