C#. Генерация строки из случайных символов. ЗадачаСгенерировать строку, состоящую из случайных символов. Немного дополним задачу, строка будет состоять из случайных символов, а сами символы будут взяты из заранее заданного определенного набора. Например, строчные и заглавные латинские буквы, цифры, знаки препинания или любые другие заданные символы в любой комбинации.
Такая штуковина вполне может пригодиться для генерации, например, пароля из заданного набора символов
РешениеДелается это довольно просто. Поручим формирование строки отдельной функции.
Во входных параметрах передадим ей строку, содержащую набор символов, из которых будет сформирована выходная случайная строка (параметр
Alphabet
) и длину генерируемой строки (параметр
Length
)
string GenRandomString(string Alphabet, int Length)
{
...
}
Внутри функции.
//создаем объект Random, генерирующий случайные числа
Random rnd = new Random();
//объект StringBuilder с заранее заданным размером буфера под результирующую строку
StringBuilder sb = new StringBuilder(Length-1);
//переменную для хранения случайной позиции символа из строки Alphabet
int Position = 0;
Далее в цикле генерируем случайную строку:
for (int i = 0; i < Length; i++)
{
//получаем случайное число от 0 до последнего
//символа в строке Alphabet
Position = rnd.Next(0, Alphabet.Length-1);
//добавляем выбранный символ в объект
//StringBuilder
sb.Append(Alphabet[Position]);
}
Возвращаем сгенерированную строку:
return sb.ToString();
Код функции на PasteBinПример использования функцииtxtReturn.Text = GenRandomString("QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm", 10);
возвращает строку случайных символов длиной 10 знаков, состоящую из заглавных и строчных букв английского алфавита.
( Немного об оптимизации )Это репост заметки из моего блога на сайте http://tolik-punkoff.com
Оригинал заметки находится здесь: http://tolik-punkoff.com/2017/03/27/csharp-generatsiya-stroki-iz-sluchajnyh-simvolov/