mirror of
				https://github.com/usememos/memos.git
				synced 2025-10-31 00:38:08 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			73 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package util
 | |
| 
 | |
| import (
 | |
| 	"crypto/rand"
 | |
| 	"math/big"
 | |
| 	"net/mail"
 | |
| 	"strconv"
 | |
| 	"strings"
 | |
| 
 | |
| 	"github.com/google/uuid"
 | |
| )
 | |
| 
 | |
| // ConvertStringToInt32 converts a string to int32.
 | |
| func ConvertStringToInt32(src string) (int32, error) {
 | |
| 	parsed, err := strconv.ParseInt(src, 10, 32)
 | |
| 	if err != nil {
 | |
| 		return 0, err
 | |
| 	}
 | |
| 	return int32(parsed), nil
 | |
| }
 | |
| 
 | |
| // HasPrefixes returns true if the string s has any of the given prefixes.
 | |
| func HasPrefixes(src string, prefixes ...string) bool {
 | |
| 	for _, prefix := range prefixes {
 | |
| 		if strings.HasPrefix(src, prefix) {
 | |
| 			return true
 | |
| 		}
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| // ValidateEmail validates the email.
 | |
| func ValidateEmail(email string) bool {
 | |
| 	if _, err := mail.ParseAddress(email); err != nil {
 | |
| 		return false
 | |
| 	}
 | |
| 	return true
 | |
| }
 | |
| 
 | |
| func GenUUID() string {
 | |
| 	return uuid.New().String()
 | |
| }
 | |
| 
 | |
| var letters = []rune("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
 | |
| 
 | |
| // RandomString returns a random string with length n.
 | |
| func RandomString(n int) (string, error) {
 | |
| 	var sb strings.Builder
 | |
| 	sb.Grow(n)
 | |
| 	for i := 0; i < n; i++ {
 | |
| 		// The reason for using crypto/rand instead of math/rand is that
 | |
| 		// the former relies on hardware to generate random numbers and
 | |
| 		// thus has a stronger source of random numbers.
 | |
| 		randNum, err := rand.Int(rand.Reader, big.NewInt(int64(len(letters))))
 | |
| 		if err != nil {
 | |
| 			return "", err
 | |
| 		}
 | |
| 		if _, err := sb.WriteRune(letters[randNum.Uint64()]); err != nil {
 | |
| 			return "", err
 | |
| 		}
 | |
| 	}
 | |
| 	return sb.String(), nil
 | |
| }
 | |
| 
 | |
| // ReplaceString replaces all occurrences of old in slice with new.
 | |
| func ReplaceString(slice []string, old, new string) []string {
 | |
| 	for i, s := range slice {
 | |
| 		if s == old {
 | |
| 			slice[i] = new
 | |
| 		}
 | |
| 	}
 | |
| 	return slice
 | |
| }
 |