Creating random strings in vb.net

I need to generate random strings in vb.net which should consist of (randomly selected) letters AZ (should be uppercase) and random numbers interspersed. It should also be able to generate them with a given length.

Thanks for the help, it drives me crazy!

+6
random
source share
7 answers

If you can convert this to VB.NET (which is trivial), I would say that it’s good for you to go (if you can’t, use this or any other tool that is worth it):

/// <summary> /// The Typing monkey generates random strings - can't be static 'cause it a monkey. /// </summary> /// <remarks> /// If you try hard enough it will eventually type some Shakespeare. /// </remarks> class TypingMonkey { private const string legalCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; static Random random = new Random(); /// <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(); char ch; for (int i = 0; i < size; i++) { ch = legalCharacters[random.Next(0, legalCharacters.Length)]; builder.Append(ch); } return builder.ToString(); } } 

Then you only need to:

 TypingMonkey myMonkey = new TypingMonkey(); string randomStr = myMonkey.TypeAway(size); 
+18
source share

Why don't you randomize the number from 1 to 26 and get a relative letter.

Something like that:

 Dim output As String = "" Dim random As New Random() For i As Integer = 0 To 9 output += ChrW(64 + random.[Next](1, 26)) Next 

Edit: Added ChrW.

Edit2: also have numbers

  Dim output As String = "" Dim random As New Random() Dim val As Integer For i As Integer = 0 To 9 val = random.[Next](1, 36) output += ChrW(IIf(val <= 26, 64 + val, (val - 27) + 48)) Next 
+4
source share

FROM#

 public string RandomString(int length) { Random random = new Random(); char[] charOutput = new char[length]; for (int i = 0; i < length; i++) { int selector = random.Next(65, 101); if (selector > 90) { selector -= 43; } charOutput[i] = Convert.ToChar(selector); } return new string(charOutput); } 

Vb.net

 Public Function RandomString(ByVal length As Integer) As String Dim random As New Random() Dim charOutput As Char() = New Char(length - 1) {} For i As Integer = 0 To length - 1 Dim selector As Integer = random.[Next](65, 101) If selector > 90 Then selector -= 43 End If charOutput(i) = Convert.ToChar(selector) Next Return New String(charOutput) End Function 
+2
source share

What about:

 Private Function GenerateString(len as integer) as String Dim stringToReturn as String="" While stringToReturn.Length<len stringToReturn&= Guid.NewGuid.ToString().replace("-","") End While Return left(Guid.NewGuid.ToString(),len) End Sub 
+2
source share

Here is a stocked class that I should generate random passwords. It is similar to JohnIdol Typing Monkey, but has a bit more flexibility if you want the generated lines to contain uppercase, lowercase, numeric or special characters.

 public static class RandomStringGenerator { private static bool m_UseSpecialChars = false; #region Private Variables private const int m_MinimumLength = 8; private const string m_LowercaseChars = "abcdefghijklmnopqrstuvqxyz"; private const string m_UppercaseChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; private const string m_NumericChars = "123456890"; private const string m_SpecialChars = "~?/@#!Β£$%^&*+-_.=|"; #endregion #region Public Methods /// <summary> /// Generates string of the minimum length /// </summary> public static string Generate() { return Generate(m_MinimumLength); } /// <summary> /// Generates a string of the specified length /// </summary> /// <param name="length">The number of characters to generate</param> public static string Generate(int length) { return Generate(length, Environment.TickCount); } #endregion #region Private Methods /// <summary> /// Generates a string of the specified length using the specified seed /// </summary> private static string Generate(int length, int seed) { // Generated strings must contain at least 3 of the following character groups: uppercase letters, lowercase letters // numerals, and special characters (!, #, $, Β£, etc) // The generated string must be at least 4 characters so that we can add a single character from each group. if (length < 4) throw new ArgumentException("String length must be at least 4 characters"); StringBuilder SB = new StringBuilder(); Random rand = new Random(seed); // Ensure that we add all of the required groups first SB.Append(GetRandomCharacter(m_LowercaseChars, rand)); SB.Append(GetRandomCharacter(m_UppercaseChars, rand)); SB.Append(GetRandomCharacter(m_NumericChars, rand)); if (m_UseSpecialChars) SB.Append(GetRandomCharacter(m_SpecialChars, rand)); // Now add random characters up to the end of the string while (SB.Length < length) { SB.Append(GetRandomCharacter(GetRandomString(rand), rand)); } return SB.ToString(); } private static string GetRandomString(Random rand) { int a = rand.Next(3); switch (a) { case 1: return m_UppercaseChars; case 2: return m_NumericChars; case 3: return (m_UseSpecialChars) ? m_SpecialChars : m_LowercaseChars; default: return m_LowercaseChars; } } private static char GetRandomCharacter(string s, Random rand) { int x = rand.Next(s.Length); string a = s.Substring(x, 1); char b = Convert.ToChar(a); return (b); } #endregion } 

To use it:

 string a = RandomStringGenerator.Generate(); // Generate 8 character random string string b = RandomStringGenerator.Generate(10); // Generate 10 character random string 

This code is in C #, but it is quite easy to convert to VB.NET using a code converter .

+1
source share

Just be simple. for vb just do:

 Public Function RandomString(size As Integer, Optional validchars As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz") As String If size < 1 Or validchars.Length = 0 Then Return "" RandomString = "" Randomize() For i = 1 To size RandomString &= Mid(validchars, Int(Rnd() * validchars.Length) + 1, 1) Next End Function 

This function allows you to use a basic subset of characters or the user can select anything. For example, you can send ABCDEF0123456789 and receive a random Hex. or "01" for binary files.

0
source share

Try this, this is the top answer already converted to VB!

 Private Function randomStringGenerator(size As Integer) Dim random As Random = New Random() Dim builder As Text.StringBuilder = New Text.StringBuilder() Dim ch As Char Dim legalCharacters As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890" For cntr As Integer = 0 To size ch = legalCharacters.Substring(random.Next(0, legalCharacters.Length), 1) builder.Append(ch) Next Return builder.ToString() End Function 
0
source share

All Articles