Просматривая некоторые пакеты 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"

Начнем с шаблона:

  1. Импортировать readline-синхронизацию
  2. Распечатайте шаблон для интерфейса командной строки

Создайте новый файл 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 всякий раз, когда узнаю что-то новое!