最近整个邮箱注册功能,需要生成激活码,封装了个生成随机激活码的方法
原理是利用ACSII码转为字符串,如a
对应的ASCII是97
,我们需要实现将97
转为a
即可
我们将所有对应的数字,大写字母,小写字母的ASCII码按照顺序存在一个ArrayList中
之后以此List的最大长度作为随机数的上限,每次获取随机的下标,获取list中的数据,将其转为String,之后拼凑起来即可获得String
代码如下
//num是生成的位数
fun generateCode(num: Int): String {
//numList建议放在类中,不然每次调用方法每次都会创建List,会有资源浪费
val numList = arrayListOf<Int>().apply {
//数字(0-9)
for (i in 30..39) {
add(i)
}
//大写字母
for (i in 65..90) {
add(i)
}
//小写字母
for (i in 97..122) {
add(i)
}
}
val size = numList.size
val sb = StringBuffer()
//循环六次(根据需要调整生成的位数)
for (i in 0..5) {
val random = Random.nextInt(size)
val item = numList[random]
//下标0-9对应的也是数字0-9
val str = if (random in 0..9) {
random.toString()
} else {
//转为字符串
String(byteArrayOf(item.toByte()))
}
sb.append(str)
}
return sb.toString()
}
评论区