亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在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 關注
  • 179 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號