Есть ли в .Net 4.0 класс, способный создавать случайные строки? - PullRequest
1 голос
/ 13 сентября 2011

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

Ответы [ 8 ]

7 голосов
/ 13 сентября 2011

Вы можете создать Guid, а затем преобразовать его в строку.

Guid.NewGuid().ToString()

Это даст вам случайную строку длиной 36, но вы можете просто обрезать ее до 20.

6 голосов
/ 13 сентября 2011

Метод Path.GetRandomFileName

Метод GetRandomFileName возвращает криптографически стойкую случайную строку, которая может использоваться как имя папки или имя файла.В отличие от GetTempFileName, GetRandomFileName не создает файл.Если безопасность вашей файловой системы имеет первостепенное значение, этот метод следует использовать вместо GetTempFileName.

3 голосов
/ 13 сентября 2011

Использование Guid.NewGuid().ToString().Replace('-', default(Char)).Substring(0, 20)

2 голосов
/ 13 сентября 2011

Как насчет:

string myString = Guid.NewGuid().ToString().Substring(0, 20);
1 голос
/ 16 декабря 2011

Генерация случайных строк в .NET

http://www.keyvan.ms/generating-random-strings-in-net

Статья описывает методы GUID, Случайные числа и RNGCryptoServiceProvider для генерации случайной строки

1 голос
/ 13 сентября 2011

Path.GetRandomFileName () создаст вам случайное имя файла - хотя думаю, что его длина всего 11 символов.

1 голос
/ 13 сентября 2011

Вы должны попробовать TestApi , точнее, API генерации текстовых строк .

0 голосов
/ 16 марта 2012

Вот функция, которую я написал, которая использует GetRandomFileName () для получения случайной строки любой длины.

''' <summary>
''' Obtain a random string of any length.
''' </summary>
''' <param name="length">Desired length of string.</param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function GetRandomString(ByVal length As Integer) As String        
    Dim sb As New StringBuilder(length)
    While (sb.Length < length)
        ' GetRandomFileName returns a "cryptographically strong" random filename ex: "bfdbn2af.sxq"
        sb.Append(IO.Path.GetRandomFileName().Replace(".", ""))
    End While
    ' strip the excess characters
    sb.Remove(length - 1, sb.Length - length)
    Return sb.ToString()
End Function
...