dashboard/utils/stringutils.go
2023-07-31 14:16:59 +01:00

51 lines
918 B
Go

package utils
import (
"crypto/rand"
"encoding/base64"
"math/big"
"strconv"
"strings"
)
var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
func RandString(length int) (string, error) {
b := make([]rune, length)
for i := range b {
idx, err := rand.Int(rand.Reader, big.NewInt(int64(len(letterRunes))))
if err != nil {
return "", err
}
b[i] = letterRunes[idx.Int64()]
}
return string(b), nil
}
func IsInt(str string) bool {
_, err := strconv.ParseInt(str, 10, 64)
return err == nil
}
func Base64Decode(s string) string {
b, err := base64.StdEncoding.DecodeString(s)
if err != nil {
return ""
}
return string(b)
}
func Base64Encode(s string) string {
return base64.StdEncoding.EncodeToString([]byte(s))
}
func StringMax(str string, max int, suffix ...string) string {
if len(str) > max {
return str[:max] + strings.Join(suffix, "")
}
return str
}