Как получить случайную строку с пробелами и смешанным регистром? - PullRequest
6 голосов
/ 26 марта 2009

Мне нужно создать случайную строку с пробелами и mixedCase.

Это это все, что я получил до сих пор:

    /// <summary>
    /// The Typing monkey generates random strings - can't be static 'cause it's a monkey.
    /// </summary>
    /// <remarks>
    /// If you wait long enough it will eventually produce Shakespeare.
    /// </remarks>
    class TypingMonkey
    {
        /// <summary>
        /// The Typing Monkey Generates a random string with the given length.
        /// </summary>
        /// <param name="size">Size of the string</param>
        /// <returns>Random string</returns>
        public string TypeAway(int size)
        {
            StringBuilder builder = new StringBuilder();
            Random random = new Random();
            char ch;

            for (int i = 0; i < size; i++)
            {
                ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
                builder.Append(ch);
            }

            return builder.ToString();
        }
    }

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

Любая помощь с благодарностью!

Ответы [ 3 ]

11 голосов
/ 26 марта 2009

Самый простой способ сделать это - просто создать строку со следующими значениями:

private readonly string legalCharacters = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

Затем используйте RNG для доступа к случайному элементу в этой строке:

public string TypeAway(int size)
{
    StringBuilder builder = new StringBuilder();
    Random random = new Random();
    char ch;

    for (int i = 0; i < size; i++)
    {
        ch = legalCharacters[random.Next(0, legalCharacters.Length)];
        builder.Append(ch);
    }

    return builder.ToString();
}
1 голос
/ 26 марта 2009

Вы можете начать с массива всех символов, которые вы разрешите

private static readonly char[] ALLOWED = new [] { 'a', 'b', 'c' ... '9' };

А потом:

{
    ...
    for (int i = 0; i < size; i++)
    {
        ch = ALLOWED[random.NextInt(0, ALLOWED.Length)];
        builder.Append(ch);
    }

    ...

    return builder.ToString();
}

return builder.ToString();

Я перефразирую, конечно. Я не уверен насчет синтаксиса для random.NextInt (), но intelisense должен помочь.

0 голосов
/ 26 марта 2009

Вы также можете использовать Lorem Ipsum . Он широко используется в индустрии графического дизайна для заполнения произвольного, реалистичного текста, не отвлекая пользователя от элементов дизайна.

Вы можете скопировать и вставить большой кусок Lorem Ipsum в постоянную строку в вашем коде, а затем просто подставить его в нужный вам размер.

Я обнаружил, что это лучше, чем иметь совершенно случайный текст, поскольку он слишком отвлекает.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...