Я новичок в Kotlin, поэтому сначала я начну с генератора паролей. Я использую IntelliJIDea

fun main() {

var helper = Int
var counter = 0
val counterOfPwCha  = 10
var pwString = ""

val opportunityArray = arrayOf('A','C','a','c','B','b','D','d','E','e','F','f','#','+','*','$','%','&','§','G','g','H','h','I','i','J','j','k','K','1','2','3','4','5','6','7','8','9',
    'l','L','M','m','N','n','O','o','P','p','Q','q','R','r','S','s','T','t','U','u','V','v','W','w','Y','y','X','x','Z','z','<','>','|','?','!',)
while (counter <= counterOfPwCha)
{
    helper = (0..73).random()
    pwString += opportunityArray[helper]
    counter++
}
println(pwString)
}

Он работает нормально, но результат не такой, как я ожидал. Пример: + 3�2L% II> J� Таким образом, он не может обрабатывать некоторые из моих символов, я могу отлаживать его, пока не узнаю, с каким типом символов он не может справиться, и удалить их из массива, но все они являются типичными PW Chars, поэтому мой вопрос: как я могу сообщить Kotlin, как обрабатывать эти символы ASCI2? Или это из-за доллара?

1
4nch0r 19 Янв 2021 в 10:22

2 ответа

Лучший ответ

Избегайте жестко запрограммированных чисел, таких как «73» в вашем диапазоне, это слишком подвержено ошибкам!

Если вы по-прежнему получаете забавные символы, введите какой-нибудь println, который показывает числовое значение каждого символа, чтобы вы могли найти его, используя "man ascii".

Код, более похожий на Kotlin, будет:

fun pwgen() {
    val counterOfPwCha = 10

    val charset = ('A'..'Z') + ('a'..'z') + ('0'..'9') + listOf('#', '+', '*', '$', '%', '&', '§', '<', '>', '|', '?', '!')
    val pwString = (1..counterOfPwCha)
        .map {
            val randomArrayIndex = charset.indices.random()
            charset[randomArrayIndex]
        }
        .onEach { c -> println("Character $c = " + c.toInt()) }
        .joinToString("")

    println(pwString)
}
0
lathspell 20 Янв 2021 в 14:14
fun main() {

var helper = Int
var counter = 0
val counterOfPwCha  = 10
var pwString = ""

val opportunityArray = arrayOf('A','C','a','c','B','b','D','d','E','e','F','f','#','+','*','$','%','&','§','G','g','H','h','I','i','J','j','k','K','1','2','3','4','5','6','7','8','9',
    'l','L','M','m','N','n','O','o','P','p','Q','q','R','r','S','s','T','t','U','u','V','v','W','w','Y','y','X','x','Z','z','<','>','|','?','!',)
while (counter <= counterOfPwCha)
{
    helper = (0..73).random()
    pwString += opportunityArray[helper]
    counter++
}
println(pwString)
}
0
4nch0r 20 Янв 2021 в 09:22