为了账号安全,请及时绑定邮箱和手机立即绑定

在Golang中如何在没有整数的范围内生成随机长度的随机字符串

在Golang中如何在没有整数的范围内生成随机长度的随机字符串

Go
慕雪6442864 2022-11-23 14:22:57
我试图用正则表达式从生成的字符串中删除整数,但这不会给我所需范围内的长度(许多会小于最小值)package mainimport (    "fmt"    "log"    "math/rand"    "regexp"    "time")func randomString(length int) string {    rand.Seed(time.Now().UnixNano())    b := make([]byte, length)    rand.Read(b)    return fmt.Sprintf("%x", b)[:length]}func randomLength(minL, maxL int) int {    rand.Seed(time.Now().UnixNano())    return rand.Intn(maxL-minL) + minL}func main() {    reg, err := regexp.Compile("[^a-zA-Z]+")    if err != nil {        log.Fatal(err)    }    for i := 0; i < 10; i++ {        processedString := reg.ReplaceAllString(randomString(randomLength(8, 16)), "")        println(processedString)    }}
查看完整描述

2 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

var seededRand = rand.New(rand.NewSource(time.Now().UnixNano()))


func StringWithCharset(length int, charset string) string {

    b := make([]byte, length)

    for i := range b {

        b[i] = charset[seededRand.Intn(len(charset)-1)]

    }

    return string(b)

}


func main() {

    rangeStart := 0

    rangeEnd := 10

    offset := rangeEnd - rangeStart

    randLength := seededRand.Intn(offset) + rangeStart


    charSet := "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ"

    randString := StringWithCharset(randLength, charSet)

}


查看完整回答
反对 回复 2022-11-23
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

您只需要定义您正在使用的字母表。类似于以下内容(您可以在 Go Playground 中摆弄它)。


package main


import (

  "fmt"

  "math/rand"

  "strings"

  "time"

)


func main() {


  rand.Seed(time.Now().UnixNano())


  var alphabet []rune = []rune("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")


  rs := randomString(20, alphabet)

  fmt.Printf("This is pretty random: %s\n", rs)


}


func randomString(n int, alphabet []rune) string {


  alphabetSize := len(alphabet)

  var sb strings.Builder


  for i := 0; i < n; i++ {

    ch := alphabet[rand.Intn(alphabetSize)]

    sb.WriteRune(ch)

  }


  s := sb.String()

  return s

}


查看完整回答
反对 回复 2022-11-23
  • 2 回答
  • 0 关注
  • 108 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信