gpt4 book ai didi

java - 生成必须包含字母、数字和特殊字符(6-10 位数字)的随机字符串

转载 作者:行者123 更新时间:2023-12-01 22:58:30 25 4
gpt4 key购买 nike

我正在生成一个 6 到 10 位数字的密码。

这是我的代码,它为我提供 6-10 位数字的随 secret 码,

val AB = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789:<=>?@_!#%&()*+,-.~";
val rnd = new Random();

def randomPassword(): String = {
val len = rnd.nextInt(5) + 5
val sb = new StringBuilder(len);
for (i <- 0 to len)
sb.append(AB.charAt(rnd.nextInt(AB.length())));
return sb.toString();
}

它工作正常,但问题是有时它会给出所有数字或字母

我每次都想要字母和数字以及特殊字符的组合。有什么建议吗?

最佳答案

这是一个更惯用的解决方案,它提供了更好的 API。

object password {
import scala.util.Random
import scala.collection.immutable.Stream


private def gen = Random.alphanumeric

def get(len: Int): String = {
def build(acc: String, s: Stream[Char]): String = {
if (s.isEmpty) acc
else build(acc + s.head, s.tail)
}

build("", gen take len)
}
}

让我们生成一些密码

1 to 25 foreach { _ => println(password get 8) }

你会看到类似的东西

YBk2UrOV
GD4eLexS
l8yxAkp9
ooQnaRpd
NgHAruB8
pMXpi4ad

注意:此解决方案可以进行几轮优化。例如。 @tailrecStringBuilder

关于java - 生成必须包含字母、数字和特殊字符(6-10 位数字)的随机字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23709261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com