character.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package character
  2. import (
  3. "math/rand"
  4. "regexp"
  5. "strings"
  6. "time"
  7. )
  8. func RandStringRunes(n int) string {
  9. var letterRunes = []rune("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890")
  10. rand.Seed(time.Now().UnixNano())
  11. b := make([]rune, n)
  12. for i := range b {
  13. b[i] = letterRunes[rand.Intn(len(letterRunes))]
  14. }
  15. return string(b)
  16. }
  17. // SubstrAfter 截取指定字符后的内容
  18. func SubstrAfter(str string, symbol string) string {
  19. comma := strings.Index(str, symbol)
  20. if comma < 0 { // -1 不存在
  21. return ""
  22. }
  23. pos := strings.Index(str[comma:], symbol)
  24. if comma+pos+1 > len(str) {
  25. return ""
  26. }
  27. return str[comma+pos+1:]
  28. }
  29. // IsLetterNumber 是否是数字和字母
  30. func IsLetterNumber(str string) bool {
  31. reg, _ := regexp.Compile("[^a-zA-Z0-9]+")
  32. p := reg.ReplaceAllString(str, "")
  33. return p == str
  34. }
  35. // InSlice 元素是否存在于切片中
  36. func InSlice[T int | int32 | int64 | string](slice []T, key T) bool {
  37. if len(slice) == 0 {
  38. return false
  39. }
  40. for i := 0; i < len(slice); i++ {
  41. if slice[i] == key {
  42. return true
  43. }
  44. }
  45. return false
  46. }