Сколько раз вы работали над приложением, и вам требовалась случайная буквенно-цифровая строка? Вы пытались предоставить список чисел и символов в строке и передать длину для случайного создания строки с помощью цикла?
Используя Node.js, это может быть намного проще. Вам просто нужно использовать встроенную библиотеку crypto
.
const { randomBytes } = require(“node:crypto”); function randomString(length) { if (length % 2 !== 0) { length++; } return randomBytes(length / 2).toString("hex"); } const string = randomString(8); // string = "df5ec630"
Некоторые проблемы заключаются в том, что длина, передаваемая методу randomBytes
, должна быть четным числом, чтобы ее можно было разделить пополам. В противном случае возвращаемая строка будет в два раза длиннее переданной. Вот почему условие является частью функции.
В качестве бонуса: если вам просто нужна случайная строка для использования вне приложения, вы можете просто зайти в терминал, ввести node
, чтобы войти в REPL, а затем добавить require(‘node:crypto’).randomBytes(8).toString(‘hex’)
.
node Welcome to Node.js v20.4.0. Type ".help" for more information. > require('node:crypto').randomBytes(8).toString('hex') '568b6620639fdf54'
Если вы хотите сгенерировать случайную строку, даже не заходя в REPL, вы можете использовать следующее:
node -e “console.log(require(‘node:crypto’).randomBytes(8).toString(‘hex’))”
На Mac вы даже можете добавить | pbcopy
к команде, чтобы строка скопировалась прямо в буфер обмена.
node -e “console.log(require(‘node:crypto’).randomBytes(8).toString(‘hex’))” | pbcopy
Просто помните, что при использовании команды из терминала или REPL длина, передаваемая в randomBytes
, будет равна половине длины выводимого значения. Поэтому, если вам нужна случайная строка из 8 символов, укажите длину 4.
Надеюсь, этот быстрый совет был полезен. Дайте мне знать в комментариях, видели ли вы какие-либо оптимизации приведенного выше кода или есть ли более простой способ генерации случайных строк.
Спасибо за прочтение!
Спасибо, что дочитали до конца. Пожалуйста, подумайте о том, чтобы подписаться на автора и эту публикацию. Посетите Stackademic, чтобы узнать больше о том, как мы демократизируем бесплатное образование в области программирования во всем мире.