Files
ppgo_job/libs/string.go
2019-07-03 22:31:27 +08:00

84 lines
1.9 KiB
Go

/**********************************************
** @Des: This file ...
** @Author: haodaquan
** @Date: 2017-09-08 00:24:25
** @Last Modified by: haodaquan
** @Last Modified time: 2017-09-17 10:12:06
***********************************************/
package libs
import (
"crypto/md5"
"fmt"
"github.com/axgle/mahonia"
"math/rand"
"regexp"
"time"
)
var emailPattern = regexp.MustCompile("[\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[a-zA-Z0-9](?:[\\w-]*[\\w])?")
func Md5(buf []byte) string {
hash := md5.New()
hash.Write(buf)
return fmt.Sprintf("%x", hash.Sum(nil))
}
func SizeFormat(size float64) string {
units := []string{"Byte", "KB", "MB", "GB", "TB"}
n := 0
for size > 1024 {
size /= 1024
n += 1
}
return fmt.Sprintf("%.2f %s", size, units[n])
}
func IsEmail(b []byte) bool {
return emailPattern.Match(b)
}
func Password(len int, pwdO string) (pwd string, salt string) {
salt = GetRandomString(4)
defaultPwd := "george518"
if pwdO != "" {
defaultPwd = pwdO
}
pwd = Md5([]byte(defaultPwd + salt))
return pwd, salt
}
// 生成32位MD5
// func MD5(text string) string{
// ctx := md5.New()
// ctx.Write([]byte(text))
// return hex.EncodeToString(ctx.Sum(nil))
// }
//生成随机字符串
func GetRandomString(lens int) string {
str := "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
bytes := []byte(str)
result := []byte{}
r := rand.New(rand.NewSource(time.Now().UnixNano()))
for i := 0; i < lens; i++ {
result = append(result, bytes[r.Intn(len(bytes))])
}
return string(result)
}
func GbkAsUtf8(str string) string {
srcDecoder := mahonia.NewDecoder("gbk")
desDecoder := mahonia.NewDecoder("utf-8")
resStr := srcDecoder.ConvertString(str)
_, resBytes, _ := desDecoder.Translate([]byte(resStr), true)
return string(resBytes)
}
//任务识别码
func JobKey(taskId, serverId int) int {
return taskId*10000000 + serverId
}