Генерируйте случайные строки в vb.net

Существуют коммерческие программы, что формат и проверяет международные телефонные номера, как этот , который даже проверяет на действительные коды области в некоторых странах. Для Северной Америки NANPA обеспечивает некоторые ресурсы для проверки кодов области.

6
задан Cyclone 9 October 2009 в 23:08
поделиться

5 ответов

Если вы можете преобразовать это в VB.NET (что тривиально), я ' d сказать, что у вас все в порядке (если не можете, используйте этот или любой другой полезный инструмент):

/// <summary>
/// The Typing monkey generates random strings - can't be static 'cause it's 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();
    }
}

Тогда все, что вам нужно сделать, это:

TypingMonkey myMonkey = new TypingMonkey();
string randomStr = myMonkey.TypeAway(size);
18
ответ дан 8 December 2019 в 03:53
поделиться

Почему бы вам не рандомизировать число от 1 до 26 и не получить относительную букву.

Что-то вроде этого:

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: ChrW добавлено .

Edit2: Также иметь числа

    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
ответ дан 8 December 2019 в 03:53
поделиться

C #

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
ответ дан 8 December 2019 в 03:53
поделиться

Как насчет:

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
ответ дан 8 December 2019 в 03:53
поделиться

Вот служебный класс, который мне нужен для генерации случайных паролей. Он похож на Typing Monkey от JohnIdol, но обладает большей гибкостью на тот случай, если вы хотите, чтобы сгенерированные строки содержали прописные, строчные, числовые или специальные символы.

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
}

Чтобы использовать его:

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

Этот код написан на C #, но должен быть довольно простым для преобразования в VB.NET с помощью преобразователя кода .

1
ответ дан 8 December 2019 в 03:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: