[英]Generate Random String/letter in Scala
我正在嘗試生成一個隨機字符串,這些是我發現的可能性:
Random.nextPrintableChar()
,打印字母、數字、標點符號Random.alphanumeric.take(size).mkString
,打印字母和數字Random.nextString(1)
,幾乎每次都打印中文字符 lol隨機是 scala.util.Random
size
是一個 Int
第二種選擇幾乎可以完成工作,但我需要從一封信開始。 我找到Random.nextPrintableChar()
但它也打印標點符號。
解決辦法是什么?
到目前為止我的解決方案是:
val low = 65 // A
val high = 90 // Z
((Random.nextInt(high - low) + low).toChar
受Random.nextPrintableChar
實現的啟發:
def nextPrintableChar(): Char = {
val low = 33
val high = 127
(self.nextInt(high - low) + low).toChar
}
為了更好地控制內容,請自行選擇字母表:
val alpha = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
def randStr(n:Int) = (1 to n).map(_ => alpha(Random.nextInt(alpha.length))).mkString
實際上生成隨機 ASCII 字符串最快的方法如下
val rand = new Random()
val Alphanumeric = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".getBytes
def mkStr(chars: Array[Byte], length: Int): String = {
val bytes = new Array[Byte](length)
for (i <- 0 until length) bytes(i) = chars(rand.nextInt(chars.length))
new String(bytes, StandardCharsets.US_ASCII)
}
def nextAlphanumeric(length: Int): String = mkStr(Alphanumeric, length)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.