123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- package utils
- import (
- "flag"
- "fmt"
- "math/rand"
- "os"
- "strings"
- "time"
- "unicode"
- )
- //IsFlagPassed 判断字符串全是数字
- func IsDigit(str string) bool {
- for _, x := range []rune(str) {
- if !unicode.IsDigit(x) {
- return false
- }
- }
- return true
- }
- //IsFlagPassed 判断是否设置了指定 flag
- func IsFlagPassed(name string) bool {
- found := false
- flag.Visit(func(f *flag.Flag) {
- if f.Name == name {
- found = true
- }
- })
- return found
- }
- //NumberOrStringToBool 字符串 1, yes 返回 true 否则 false
- func NumberOrStringToBool(input string) bool {
- if input == "1" {
- return true
- }
- if input == "yes" {
- return true
- }
- return false
- }
- //NumberToBool 大于0 返回 true 否则 false
- func NumberToBool(input int) bool {
- if input > 0 {
- return true
- } else {
- return false
- }
- }
- //Bool to int true 返回 1 否则 0
- func BoolToInt(input bool) int {
- var output int
- if input {
- output = 1
- } else {
- output = 0
- }
- return output
- }
- //BoolToNumber true 返回 "1" false 返回 "0"
- func BoolToNumber(input bool) string {
- if input {
- return "1"
- }
- return "0"
- }
- //BoolToString true 返回 "yes" false 返回 "no"
- func BoolToString(input bool) string {
- if input {
- return "yes"
- }
- return "no"
- }
- //YesToOn Yes 或 yes 返回 "on" 否则返回 "off"
- // 会议 Muted 的值可能是 By admin
- func YesToOn(input string) string {
- if input == "Yes" || input == "yes" || strings.Contains(input, "By") {
- return "on"
- }
- return "off"
- }
- //GetRandStr 生成随机密码
- func GetRandStr(baseStr string, length int) string {
- r := rand.New(rand.NewSource(time.Now().UnixNano() + rand.Int63()))
- bytes := make([]byte, length)
- l := len(baseStr)
- for i := 0; i < length; i++ {
- bytes[i] = baseStr[r.Intn(l)]
- }
- return string(bytes)
- }
- //SqlLike sql like 头尾添加 %%
- func SqlLike(input string) string {
- return fmt.Sprintf("%%%s%%", input)
- }
- // IsChannel 判断输入是否是 Channel
- func IsChannel(input string) bool {
- if strings.Contains(input, "SIP") {
- return true
- }
- if strings.Contains(input, "Local") {
- return true
- }
- if strings.Contains(input, "DAHDI") {
- return true
- }
- return false
- }
- //判断文件是否存在
- func PathExists(path string) bool {
- _, err := os.Stat(path)
- if err == nil {
- return true
- }
- if os.IsNotExist(err) {
- return false
- }
- return false
- }
- // 数组去重
- func RemoveDuplication(arr []string) []string {
- set := make(map[string]struct{}, len(arr))
- j := 0
- for _, v := range arr {
- _, ok := set[v]
- if ok {
- continue
- }
- set[v] = struct{}{}
- arr[j] = v
- j++
- }
- return arr[:j]
- }
|