1、字符串是否在数组内
func InArray(target string, str_array []string) bool {
for _, element := range str_array {
if target == element {
return true
}
}
return false
}
2、MD5加密
func Md5(str string) string {
str = fmt.Sprintf("%x", md5.Sum([]byte(str))) //将[]byte转成16进制
return str
}
3、生成唯一id
func RandString(len int) string {
r := rand.New(rand.NewSource(time.Now().UnixNano()))
bytes := make([]byte, len)
for i := 0; i < len; i++ {
b := r.Intn(26) + 65
bytes[i] = byte(b)
}
return string(bytes)
}
4、校验手机号
func CheckMobile(phone string) bool {
regRuler := "^1[345789]{1}\\d{9}$"
reg := regexp.MustCompile(regRuler)
return reg.MatchString(phone)
}
5、校验身份证号
func CheckIdCard(card string) bool {
//18位身份证 ^(\d{17})([0-9]|X)$
// (^\d{15}$) 15位身份证
// (^\d{18}$) 18位身份证
// (^\d{17}(\d|X|x)$) 18位身份证 最后一位为X的用户
regRuler := "(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)"
// 正则调用规则
reg := regexp.MustCompile(regRuler)
// 返回 MatchString 是否匹配
return reg.MatchString(card)
}
6、base64加解密
//+build wireinject
package main
import (
"encoding/base64"
"fmt"
"log"
)
func main() {
str := "test string"
fmt.Printf("string : %v\n", str)
input := []byte(str)
fmt.Printf("[]byte : %v\n", input)
// 演示base64编码
encodeString := base64.StdEncoding.EncodeToString(input)
fmt.Printf("encode base64 : %v\n", encodeString)
// 对上面的编码结果进行base64解码
decodeBytes, err := base64.StdEncoding.DecodeString(encodeString)
if err != nil {
log.Fatalln(err)
}
fmt.Printf("decode base64 : %v\n", string(decodeBytes))
// 如果要用在url中,需要使用URLEncoding
urlencode := base64.URLEncoding.EncodeToString([]byte(input))
fmt.Printf("urlencode : %v\n", urlencode)
//URLEncoding
urldecode, err := base64.URLEncoding.DecodeString(urlencode)
if err != nil {
log.Fatalln(err)
}
fmt.Printf("urldecode : %v\n", string(urldecode))
}
7、Uuid
package main
import (
"fmt"
"log"
"github.com/gofrs/uuid"
)
func main() {
// 产生UUID1 timestamp + MAC 地址。
u1, err := uuid.NewV1()
if err != nil {
log.Fatalf("failed to generate Version 1 UUID: %v", err)
}
fmt.Println("generated Version 1 UUID:", u1.String())
// // 产生UUID2 基于 v1 的基础上优化了下,更安全。
u2, err := uuid.NewV2(uuid.DomainPerson)
if err != nil {
log.Fatalf("failed to generate Version 2 UUID: %v", err)
}
fmt.Println("generated Version 2 UUID:", u2.String())
// 产生UUID3 基于 namespace + 输入内容 进行 MD5。
u3 := uuid.NewV3(uuid.Must(uuid.NewV1()), "opcai")
if err != nil {
log.Fatalf("failed to generate Version 3 UUID: %v", err)
}
fmt.Println("generated Version 3 UUID:", u3.String())
// 产生UUID4 基于随机数。
u4, err := uuid.NewV4()
if err != nil {
log.Fatalf("failed to generate Version 4 UUID: %v", err)
}
fmt.Println("generated Version 4 UUID:", u4.String())
// 产生UUID5 跟 V3 差不多,只是把散列算法的 MD5 变成 SHA1。
u5 := uuid.NewV5(uuid.Must(uuid.NewV4()), "opcai")
if err != nil {
log.Fatalf("failed to generate Version 5 UUID: %v", err)
}
fmt.Println("generated Version 5 UUID:", u5.String())
// 将字符串转换成UUID
s := "6ba7b810-9dad-11d1-80b4-00c04fd430c8"
uuidObject, err := uuid.FromString(s)
if err != nil {
log.Fatalf("failed to parse UUID %q: %v", s, err)
}
fmt.Println("successfully parsed UUID Version", uuidObject.Version())
}
8、去掉字符串空格
func UnsetSpace(str string) string {
reg := regexp.MustCompile(`[\s\p{Zs}]{1,}`)
reg.ReplaceAllString(str, "") //请求参数,去掉所有空格
// reg.ReplaceAllString(string(str), ""),
return str
}
9、gin动态获取form-data
func GetFormData(c *gin.Context) map[string]interface{} {
params := make(map[string]interface{})
for k, v := range c.Request.PostForm {
params[k] = v[0]
}
return params
}
10、gin动态获取json
func GetJsonParams(c *gin.Context) string {
var parms []byte
if c.Request.Body != nil {
parms, _ = ioutil.ReadAll(c.Request.Body)
c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(parms))
}
return string(parms)
}
11 切片转字符串
strings.Replace(strings.Trim(fmt.Sprint(array_or_silce), "[]"), " ", ",", -1)