im 管理后台
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
// Package charset
|
||||
// @Link https://github.com/bufanyun/hotgo
|
||||
// @Copyright Copyright (c) 2023 HotGo CLI
|
||||
// @Author Ms <133814250@qq.com>
|
||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
||||
package charset
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"crypto/rand"
|
||||
"github.com/gogf/gf/v2/errors/gerror"
|
||||
"github.com/gogf/gf/v2/text/gstr"
|
||||
"github.com/gogf/gf/v2/util/gutil"
|
||||
r "math/rand"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
// RandomCreateBytes 生成随机字串符
|
||||
func RandomCreateBytes(n int, alphabets ...byte) []byte {
|
||||
if len(alphabets) == 0 {
|
||||
alphabets = []byte(`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`)
|
||||
}
|
||||
var bytes = make([]byte, n)
|
||||
var randBy bool
|
||||
if num, err := rand.Read(bytes); num != n || err != nil {
|
||||
randBy = true
|
||||
}
|
||||
for i, b := range bytes {
|
||||
if randBy {
|
||||
bytes[i] = alphabets[r.New(r.NewSource(time.Now().UnixNano())).Intn(len(alphabets))]
|
||||
} else {
|
||||
bytes[i] = alphabets[b%byte(len(alphabets))]
|
||||
}
|
||||
}
|
||||
return bytes
|
||||
}
|
||||
|
||||
// ParseErrStack 解析错误的堆栈信息
|
||||
func ParseErrStack(err error) []string {
|
||||
return ParseStack(gerror.Stack(err))
|
||||
}
|
||||
|
||||
// ParseStack 解析堆栈信息
|
||||
func ParseStack(st string) []string {
|
||||
stack := gstr.Split(st, "\n")
|
||||
for i := 0; i < len(stack); i++ {
|
||||
stack[i] = gstr.Replace(stack[i], "\t", "--> ")
|
||||
}
|
||||
return stack
|
||||
}
|
||||
|
||||
// SerializeStack 解析错误并序列化堆栈信息
|
||||
func SerializeStack(err error) string {
|
||||
buffer := bytes.NewBuffer(nil)
|
||||
gutil.DumpTo(buffer, ParseErrStack(err), gutil.DumpOption{
|
||||
WithType: false,
|
||||
ExportedOnly: false,
|
||||
})
|
||||
return buffer.String()
|
||||
}
|
||||
|
||||
// SubstrAfter 截取指定字符后的内容
|
||||
func SubstrAfter(str string, symbol string) string {
|
||||
comma := strings.Index(str, symbol)
|
||||
if comma < 0 { // -1 不存在
|
||||
return ""
|
||||
}
|
||||
pos := strings.Index(str[comma:], symbol)
|
||||
if comma+pos+1 > len(str) {
|
||||
return ""
|
||||
}
|
||||
return str[comma+pos+1:]
|
||||
}
|
||||
Reference in New Issue
Block a user