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