Просматривая некоторые пакеты npm, я наткнулся на это 👇
Источник: https://www.npmjs.com/package/randomstring
Эта библиотека, по-видимому, помогает вам создавать случайные строки с помощью randomstring.generate() . Мой вопрос, не можем ли мы создать собственный генератор случайных строк? Давайте узнаем, как мы можем построить его. Подписывайтесь на меня …
Мы собираемся создать простой CLI (интерфейс командной строки), где мы можем выбрать два варианта:
Вариант 1. Создание случайных буквенно-цифровых значений
Вариант 2: генерировать случайные альфа-значения
Мы собираемся воспользоваться помощью только одного пакета узлов: readline-sync 👇
Этот пакет поможет вам получить ввод из вашей командной строки.
Итак, давайте сразу приступим к делу.
1. Создание шаблона CLI
Установите пакет readline-sync npm с помощью этой команды в командной строке:
npm i readline-sync
Обновите файл package.json в редакторе кода, добавив:
"type" : "module"
Начнем с шаблона:
- Импортировать readline-синхронизацию
- Распечатайте шаблон для интерфейса командной строки
Создайте новый файл main.js
import readlineSync from 'readline-sync'; function main(){ console.clear(); console.log('-----------------------------------'); console.log('\t\t Random String CLI '); console.log('-----------------------------------'); let choose = readlineSync.questionInt(` 0 to Exit \n 1 To Generate Random String of Alpha Numeric Characters \n 2 to Generate Random String of Alpha Characters\n\n Enter Your Option: `); let length = readlineSync.questionInt("Enter the length of the random string : "); switch(choose){ case 1: console.log('AlphaNumeric Values'); break; case : console.log('Alpha Values'); break; default: console.log('Bye Brotha.... terminating the programme'); break; }
Этот код довольно понятен и принимает ввод для альфа- или буквенно-цифровых значений и длины случайной строки.
Давайте добавим еще одну функциональность, спросив, хотите ли вы продолжить снова или хотите прервать. Довольно просто, я думаю:
let ask = readlineSync.question('Do you want to continue : (y/n)? '); if(ask == 'Yes' || ask == 'y' || ask == 'Y' || ask == 'yes'){ main(); } else { console.log('Bye Bye .... terminating the program'); } }
Давайте протестируем наш код :)
node main.js
Работает очень хорошо надо сказать!
2. Построение бизнес-логики для случайной строки
Давайте создадим функцию randomstring(), которая принимает нашу опцию в качестве параметра для печати необходимой строки.
Мы добавим пустую строку, в которой будет храниться набор данных согласно выбранному нами варианту.
Буквенно-цифровой набор будет состоять из символов 0 — 9, a — z, A-Z.
Альфа-набор будет состоять из алфавитов az и AZ.
function randomString(choose){ let length = readlineSync.questionInt("Enter the length of the random string : "); let chars = ''; if (choose == 1){ // AlphaNumeric DataSet chars = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; } else { // Alpha DataSet Only chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; } }
Теперь наступает настоящая часть генерации случайной строки.
Довольно просто, никаких ракетостроения!
Мы используем Math.random() и умножаем его на выбранные нами символы.
Поскольку Math.random() печатает случайные десятичные значения от 0 до 1, мы печатаем минимальное значение, добавляя его с помощью Math.floor().
Нам нужно перебрать индекс из набора данных, поэтому давайте воспользуемся циклом for() и сохраним значения в пустой строке.
let randomStr = ''; for(let i = 0; i < length ; i++){ let index = Math.floor(Math.random() * (chars.length - 1)); randomStr += chars[index]; } // Prints the random string with length and generates a random string! console.log(`Random String with the length of ${length} is : `, randomStr);
Вот и все!
Ваш генератор случайных строк готов 🥳
Теперь, если вы вернетесь и проверите пакет randomstringnpm, размер файла составит около 16 КБ.
Где наш генератор случайных строк возьмет максимум: (Проверьте сами) с помощью этой команды:
ll -h
Менее › 2 КБ (варьируется!)
Мы создали простой пакет случайных строковых узлов менее чем за 7 минут. Не нужно устанавливать пакет npm и увеличивать размер файла :)
Я надеюсь, что вам было весело изучать это, так же как и мне во время создания этого!
Узнал об этом на Первом учебном курсе по программированию в Индии @thehackingschool, который преподает Ипраш.
Присоединяйтесь к моему сообществу программистов: https://chat.whatsapp.com/BojcIahGeY04sHG4xIPT4o
Увидимся › буду писать о #Javascript и #WebDev всякий раз, когда узнаю что-то новое!