1290 Stimmen

Wie kann ich zufällige alphanumerische Zeichenfolgen erzeugen?

Wie kann ich eine zufällige 8 Zeichen alphanumerische Zeichenfolge in C# generieren?

2 Stimmen

Welcher Rest

8 Stimmen

O s o s

2 Stimmen

Es wäre schön, wenn die Sprachlokalisierung in diese Frage einbezogen würde. Vor allem, wenn Ihre Benutzeroberfläche für Chinesisch oder Bulgarisch geeignet sein soll!

0voto

Dhanuka777 Punkte 7835

Hier ist ein Mechanismus zur Erzeugung einer zufälligen alphanumerischen Zeichenkette (ich verwende dies zur Erzeugung von Passwörtern und Testdaten), ohne das Alphabet und die Zahlen zu definieren,

CleanupBase64 entfernt notwendige Teile der Zeichenkette und fügt rekursiv zufällige alphanumerische Buchstaben hinzu.

        public static string GenerateRandomString(int length)
        {
            var numArray = new byte[length];
            new RNGCryptoServiceProvider().GetBytes(numArray);
            return CleanUpBase64String(Convert.ToBase64String(numArray), length);
        }

        private static string CleanUpBase64String(string input, int maxLength)
        {
            input = input.Replace("-", "");
            input = input.Replace("=", "");
            input = input.Replace("/", "");
            input = input.Replace("+", "");
            input = input.Replace(" ", "");
            while (input.Length < maxLength)
                input = input + GenerateRandomString(maxLength);
            return input.Length <= maxLength ?
                input.ToUpper() : //In my case I want capital letters
                input.ToUpper().Substring(0, maxLength);
        }

0voto

nzrytmn Punkte 4812

Es gibt eine der großartigsten Nuget-Pakete die dies so einfach machen.

var myObject = new Faker<MyObject>()
.RuleFor(p => p.MyAlphaNumericProperty, f => f.Random.AlphaNumeric(/*lenght*/ 7))
.Generate();

Ein gutes Beispiel dafür ist ici .

0voto

KregHEk Punkte 412
public static class StringHelper
{
    private static readonly Random random = new Random();

    private const int randomSymbolsDefaultCount = 8;
    private const string availableChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

    private static int randomSymbolsIndex = 0;

    public static string GetRandomSymbols()
    {
        return GetRandomSymbols(randomSymbolsDefaultCount);
    }

    public static string GetRandomSymbols(int count)
    {
        var index = randomSymbolsIndex;
        var result = new string(
            Enumerable.Repeat(availableChars, count)
                      .Select(s => {
                          index += random.Next(s.Length);
                          if (index >= s.Length)
                              index -= s.Length;
                          return s[index];
                      })
                      .ToArray());
        randomSymbolsIndex = index;
        return result;
    }
}

-1voto

Serguei Fedorov Punkte 7255

Eine sehr einfache Lösung. Sie verwendet ASCII Werte und erzeugt einfach "zufällige" Zeichen dazwischen.

public static class UsernameTools
{
    public static string GenerateRandomUsername(int length = 10)
    {
        Random random = new Random();
        StringBuilder sbuilder = new StringBuilder();
        for (int x = 0; x < length; ++x)
        {
            sbuilder.Append((char)random.Next(33, 126));
        }
        return sbuilder.ToString();
    }

}

-1voto

PetNoire Punkte 75

Ich bin mir nicht 100%ig sicher, da ich nicht JEDE Option getestet habe, aber von denen, die ich getestet habe, ist diese die schnellste. Ich habe sie mit der Stoppuhr gemessen und sie zeigte 9-10 Ticks an, wenn also Geschwindigkeit wichtiger ist als Sicherheit, sollten Sie diese ausprobieren:

 private static Random random = new Random(); 
 public static string Random(int length)
     {   
          var stringChars = new char[length];

          for (int i = 0; i < length; i++)
              {
                  stringChars[i] = (char)random.Next(0x30, 0x7a);                  
                  return new string(stringChars);
              }
     }

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