Как создать строку с длиной меньше / больше чем длина - PullRequest
0 голосов
/ 16 января 2020

Я бы хотел, чтобы пользователи могли выбирать точную длину или меньше / больше, чем количество символов, которые будут сгенерированы (в генераторе паролей).

Например, я сделал:

//the longivity of the generated string
                       var random = new Random();

                       for (int i = 0; i < stringChars.Length; i++)
                       {
                           stringChars[i] = abc[random.Next(abc.Length)];
                       }
//abc has been declared before, it is simply ABCD... for character generation

                       var finalString = new String(stringChars);
                       TextBox1.Text = finalString;
//this is the result box

Теперь моя проблема, если пользователь входит, например. 10 и требует менее 10 символов сгенерированной строки, что мне делать?

Ответы [ 2 ]

3 голосов
/ 16 января 2020

Вы можете сделать, например, что-то вроде этого (с силой Linq):

public string GeneratePassword(string abc, int minLenght, int maxLenght)
{
    var random = new Random();
    var chars = Enumerable
        .Range(0, random.Next(minLenght, maxLenght + 1)) // Generate a range between the min and max.
        .Select(x => abc[random.Next(abc.Length)])       // Select a random character from the abc.
        .ToList();

    // Concatenate the string.
    return string.Join(string.Empty, chars);
}

Вы должны использовать System.Linq

Использование:

var input = 10;
var abc = "abcde";
var maxPasswordLength = 100;
var minPasswordLength = 1;

// More than the input.
GeneratePassword(abc, input + 1, maxPasswordLength);
// Less than the input.
GeneratePassword(abc, minPasswordLength, input - 1);
// Exact length.
GeneratePassword(abc, input, input);
0 голосов
/ 16 января 2020
public class Program
{
    private const int MAX_LENGTH = 50;
    static void Main(string[] args)
    {
        var less = GeneratedLessThan(12);
        var more = GeneratedMoreThan(12);
        Console.WriteLine($"Less Than : {less} ({less.Length})");
        Console.WriteLine($"More Than : {more} ({more.Length})");
        Console.ReadLine();
    }

    static char[] ABC()
    {
        List<char> list = new List<char>();
        for (char i = 'A'; i <= 'Z'; i++)
        {
            list.Add(i);
        }
        return list.ToArray();
    }

    static string GeneratedLessThan(int max) => GeneratedString(0, max);
    static string GeneratedMoreThan(int min) => GeneratedString(min, MAX_LENGTH);
    static string GeneratedString(int min, int max)
    {
        StringBuilder builder = new StringBuilder();
        var abc = ABC();
        var rnd = new Random();
        for (int i = 0; i <= rnd.Next(min, max); i++)
        {
            builder.Append(abc[rnd.Next(abc.Length)]);
        }

        return builder.ToString();
    }
}

Может быть, вам не нужна функция AB C.

Выход:

Less Than : IORS (4)
More Than : BSVPFZVQRWZTSPYDI (17)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...