Kotlin如何生成5-15位长度的字符串密码
解决Kotlin密码生成器长度过长问题
原代码问题分析
- 循环遍历
xy列表的所有元素(共25个),每次循环打印2个字符,最终输出50位左右的字符串,这是密码过长的核心原因。 xy.size-3、x.size-4仅做数值计算,未修改集合长度,完全起不到控制输出次数的作用。- 原字符集
('a'..'Z')包含[、\等非字母符号,若仅需字母密码,建议修正为纯大小写字母集合。
修正后的代码
忽略numbers和x变量,生成5-15位纯字母密码的实现:
class PasswordMaker { // 仅保留大小写字母作为密码字符集 private val charPool = ('a'..'z') + ('A'..'Z') fun generatePassword() { // 生成5到15之间的随机长度 val passwordLength = (5..15).random() val password = buildString { repeat(passwordLength) { append(charPool.random()) } } println(password) } } // 使用示例 fun main() { val maker = PasswordMaker() maker.generatePassword() }
关键修改说明
- 用
(5..15).random()直接生成目标范围内的随机密码长度,精准控制最终密码长度。 - 使用
buildString高效拼接字符,避免多次字符串拼接的性能损耗。 - 循环次数由
passwordLength决定,确保输出字符数正好符合要求。
内容的提问来源于stack exchange,提问作者Tom Levi
相关产品推荐
相关产品推荐

