mirror of https://github.com/ouqiang/gocron
107 lines
2.3 KiB
Go
107 lines
2.3 KiB
Go
package utils
|
|
|
|
import (
|
|
"crypto/md5"
|
|
"encoding/hex"
|
|
"math/rand"
|
|
"time"
|
|
"runtime"
|
|
"github.com/Tang-RoseChild/mahonia"
|
|
"strings"
|
|
"os"
|
|
"fmt"
|
|
)
|
|
|
|
// 生成长度为length的随机字符串
|
|
func RandString(length int64) string {
|
|
sources := []byte("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
|
|
result := []byte{}
|
|
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
|
sourceLength := len(sources)
|
|
var i int64 = 0
|
|
for ; i < length; i++ {
|
|
result = append(result, sources[r.Intn(sourceLength)])
|
|
}
|
|
|
|
return string(result)
|
|
}
|
|
|
|
// 生成32位MD5摘要
|
|
func Md5(str string) string {
|
|
m := md5.New()
|
|
m.Write([]byte(str))
|
|
|
|
return hex.EncodeToString(m.Sum(nil))
|
|
}
|
|
|
|
// 生成0-max之间随机数
|
|
func RandNumber(max int) int {
|
|
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
|
|
|
return r.Intn(max)
|
|
}
|
|
|
|
// 判断当前系统是否是windows
|
|
func IsWindows() bool {
|
|
return runtime.GOOS == "windows"
|
|
}
|
|
|
|
// GBK编码转换为UTF8
|
|
func GBK2UTF8(s string) (string, bool) {
|
|
dec := mahonia.NewDecoder("gbk")
|
|
|
|
return dec.ConvertStringOK(s)
|
|
}
|
|
|
|
// 批量替换字符串
|
|
func ReplaceStrings(s string, old []string, replace []string) string {
|
|
if s == "" {
|
|
return s
|
|
}
|
|
if len(old) != len(replace) {
|
|
return s
|
|
}
|
|
|
|
for i, v := range old {
|
|
s = strings.Replace(s, v, replace[i], 1000)
|
|
}
|
|
|
|
return s
|
|
}
|
|
|
|
func InStringSlice(slice []string, element string) bool {
|
|
element = strings.TrimSpace(element)
|
|
for _, v := range slice {
|
|
if strings.TrimSpace(v) == element{
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
// 转义json特殊字符
|
|
func EscapeJson(s string) string {
|
|
specialChars := []string{"\\", "\b","\f", "\n", "\r", "\t", "\"",}
|
|
replaceChars := []string{ "\\\\", "\\b", "\\f", "\\n", "\\r", "\\t", "\\\"",}
|
|
|
|
return ReplaceStrings(s, specialChars, replaceChars)
|
|
}
|
|
|
|
// 判断文件是否存在及是否有权限访问
|
|
func FileExist(file string) bool {
|
|
_, err := os.Stat(file)
|
|
if os.IsNotExist(err) {
|
|
return false
|
|
}
|
|
if os.IsPermission(err) {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
// 格式化环境变量
|
|
func FormatUnixEnv(key, value string) string {
|
|
return fmt.Sprintf("export %s=%s; ", key, value)
|
|
} |