6 Stimmen

Wie erhalte ich eine zufällige Zeichenkette mit Leerzeichen und gemischter Groß- und Kleinschreibung?

Ich muss eine zufällige Zeichenfolge mit Leerzeichen und gemischter Groß- und Kleinschreibung generieren.

Diese ist alles, was ich bis jetzt habe:

    /// <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();
        }
    }

Ich erhalte nur Großbuchstaben-Zeichenfolgen ohne Leerzeichen - ich glaube, der Tweak sollte ziemlich striaghtforward sein, gemischte Groß- und Kleinschreibung und Leerzeichen in der Suppe zu erhalten.

Jede Hilfe ist sehr willkommen!

11voto

John Rasch Punkte 60054

Am einfachsten ist es, eine Zeichenkette mit den folgenden Werten zu erstellen:

private readonly string legalCharacters = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

Verwenden Sie dann den RNG, um auf ein Zufallselement in dieser Zeichenkette zuzugreifen:

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();
}

1voto

dustyburwell Punkte 5705

Sie könnten mit einem Array aller zulässigen Zeichen beginnen

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

Und dann:

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

    ...

    return builder.ToString();
}

return builder.ToString();

Ich umschreibe das natürlich. Ich bin mir nicht sicher über die Syntax von random.NextInt(), aber intelisense sollte helfen.

0voto

Rezlaj Punkte 244

Sie können auch Folgendes verwenden Lorem Ipsum . Es wird häufig in der Grafikdesignbranche verwendet, um zufälligen, realistischen Text zu ersetzen, ohne dass der Benutzer von den Designelementen abgelenkt wird.

Sie können einen großen Teil des Lorem Ipsum kopieren und in eine konstante Zeichenkette in Ihrem Code einfügen und diese dann einfach in die von Ihnen benötigte Größe zerlegen.

Ich fand dies besser als einen völlig willkürlichen Text, da er zu sehr ablenkt.

Ich hoffe, das hilft.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X