在vb.net中生成随机字符串

在vb.net中生成随机字符串,vb.net,random,Vb.net,Random,我需要在vb.net中生成随机字符串,该字符串必须由(随机选择的)字母A-Z(必须大写)和随机数字组成。它还需要能够以设定的长度生成它们 谢谢你的帮助,这快把我逼疯了 为什么不将数字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 编辑:Ch

我需要在vb.net中生成随机字符串,该字符串必须由(随机选择的)字母A-Z(必须大写)和随机数字组成。它还需要能够以设定的长度生成它们


谢谢你的帮助,这快把我逼疯了

为什么不将数字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
编辑: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
Dim输出为字符串=“”
Dim random作为新的random()
作为整数的Dim val
对于i,整数=0到9
val=random.[Next](1,36)

output+=ChrW(IIf(val如果您可以将其转换为VB.NET(这很简单),我会说您可以继续(如果您不能,请使用或任何其他值得使用的工具):

C#

那么:

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
私有函数生成器字符串(len为整数)
Dim stringToReturn as String=“”

虽然stringToReturn.Length这里有一个实用程序类,我必须生成随机密码。它类似于JohnIdol的键入Monkey,但在您希望生成的字符串包含大写、小写、数字或特殊字符时,它有一点更大的灵活性

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
}

这段代码是C语言编写的,但应该很容易使用转换程序转换为VB.NET。

简单一点。对于VB,只需执行以下操作:

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
Public Function RandomString(大小为整数,可选有效字符为String=“abcdefghijklmnopqrstuvxyz012456789abcdefghijklmnopqrstuvxyz”)作为字符串
如果大小<1或validchars.Length=0,则返回“”
RandomString=“”
随机化
对于i=1的尺寸
随机字符串&=Mid(validchars,Int(Rnd()*validchars.Length)+1,1)
下一个
端函数

此函数允许使用字符的基本子集,或者用户可以选择任何内容。例如,您可以发送ABCDEF0123456789并获取随机十六进制或二进制的“01”。

试试这个,这是已转换为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

下次用这个,哈哈,这样我就不用了;)嘿!我也链接了-我得到了猴子;)不客气,哈哈!它甚至可以转换回c#,这样您就可以在c#的东西中使用我们的vb源代码)。约翰,我没有看到任何链接,哈哈?但是你的猴子非常有趣,我不能否认@旋风:已经切换到C#了。到黑暗面来。:)引述:[如果您不能,请使用-->这个您忘记了数字。:)您包括了小写字母和
。并且您已经完成了Snake-Plissken的功能。:)小写等功能都消失了。Snake-Plissken永远不会消失:)使用它可能会有点麻烦,但它很有效,而且很有趣,因为您知道数据的大小,您还可以初始化它使用此值替换StringBuilder。这将避免不必要的内存分配。虽然回答得很好,但+1。@Cyclone的乐趣使其值得;)-如果您对我当前在哪里使用这段代码感到好奇,请看这里-->聪明。添加替换代码并处理长度超过1 Guid的字符串,我将向上投票。您甚至可以这样做通过将
.ToString()
更改为
.ToString(“N”)
,使用
Replace(“-”,”)
调用,请参阅
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
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
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
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