我嘗試使用正則運算式從生成的字串中洗掉整數,但這不會給我所需范圍內的長度(許多將小于最小值)
package main
import (
"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)
}
}
編輯:當我搜索問題時,我錯過了該問題中詳細的@icza答案。
uj5u.com熱心網友回復:
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)
}
uj5u.com熱心網友回復:
您只需要定義您正在使用的字母表。類似下面的東西(你可以在 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
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/444571.html
上一篇:golang如何洗掉%!d(string=instring
下一篇:使用小數位的整數條件格式
