$ perl -le '@char=("a".."z","A".."Z");$random = join "",map { $char[int rand(scalar @char)] } 0..15;print $random'
hGAHnriMJzMdnNqZ
the string was built by letters only (including either lowercase or uppercase).
what’s the easy way in scala?
$ perl -le '@char=("a".."z","A".."Z");$random = join "",map { $char[int rand(scalar @char)] } 0..15;print $random'
hGAHnriMJzMdnNqZ
the string was built by letters only (including either lowercase or uppercase).
what’s the easy way in scala?
You can use scala.util.Random to generate random characters, e.g. using nextPrintableChar. Combine it with an iterator, to generate a sequence of them and filter to further restrict which characters you want:
Iterator.continually(Random.nextPrintableChar) //generate random characters
.filter(_.isLetter) // restrict to letters only
.take(15) // take only the required amount
.mkString // combine into string
scala> Iterator.continually(Random.nextPrintableChar()).filter(_.isLetter).take(16).mkString
val res20: String = RisBIniiUGLbHvLI
This is really good. thanks a lot.
To generate a string who contains letters only:
Iterator.continually(Random.nextPrintableChar()).filter(_.isLetter).take(16).mkString
val res28: String = HYtlLYtPHruCXARJ
To generate the string who contains numbers only:
Iterator.continually(Random.nextPrintableChar()).filter(_.isDigit).take(16).mkString
val res30: String = 8209883032775117
To generate the string who contains letters or numbers:
Iterator.continually(Random.nextPrintableChar()).filter(_.isLetterOrDigit).take(16).mkString
val res36: String = qh7TMucfNJvnfR1b
To generate the string who contains anything:
Iterator.continually(Random.nextPrintableChar()).take(16).mkString
val res37: String = VQ:|bi[69pv9x#n)
Thanks @crater2150
I have found another similar way:
scala> Random.alphanumeric.filter(_.isLetter).take(16).mkString
val res58: String = HFoGWtNxkCkydkMF
Ah, nice, I didn’t know about that one. If there is already a method for generating any length of characters that’s even better ![]()