[英]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.