您的位置:首页 > 其它

生成任意长度的随机字符串

2013-07-03 16:02 423 查看
有很多种方案:

方案一:

Public Function GenRndString(ByVal strNum As Long) As String
If strNum <= 0 Then
Return ""
Exit Function
End If

Dim i As Long
Dim intLength As Integer
GenRndString = ""
Const STRINGSOURCE = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
intLength = Len(STRINGSOURCE) - 1

Randomize()
For i = 1 To strNum
GenRndString = GenRndString & Mid(STRINGSOURCE, Int(Rnd() * intLength + 1), 1)
Next
Return GenRndString
End Function


传入参数strNum = 128

TxtRadStr.Text = GenRndString(128) ' 生成128位随机字符串

测试输出:mZX30h40nWC6FAZGBN5bk5wI2L2X2VSnpVPO9bA9wEXYP7Mu9iKtfp7M5WfG0Am0nywt3YS1Emc4e3UmiUbOHl3PSurYWQWB5jrcbm564x6duD8OJRY6U9tvaJHRUZqq

方案二:

Function GenRndString1(ByVal strNum As Integer) As String
Dim RndNum, i As Integer
Dim RndChar As Char
Dim outStr As String
outStr = ""
' ////////////Description ////
'###0-9 的ASCII码是:48-57 ####
'###A-Z 的ASCII码是:65-90 ####
'###a-z 的ASCII码是:97-122 ###
'//////////////End/////////////
Randomize()
For i = 1 To strNum
RndNum = Int(Rnd() * 62) '随机生成的字符有大小写字母和数字,共有26个
If RndNum < 10 Then      '如果小于10,则是数字 数字的ASCII是48-57 对应 随机数字 0-9 所以要将随机数字加48
RndChar = Chr(RndNum + 48) 'Chr 是将把数字按Ascii码转换为对应的字符
ElseIf RndNum < 36 Then  '如果小于36,则是大写字母 大写字母的ASCII是65-90 对应 随机数字10-35 所以要将随机数字加55
RndChar = Chr(RndNum + 55)
ElseIf RndNum > 36 Then  '如果大于36,则是小写字母 小写字母的ASCII是97-122 对应 随机数字36-62 所以要将随机数字加61
RndChar = Chr(RndNum + 61)
End If
outStr = outStr + RndChar
Next
GenRndString1 = outStr
End Function

传入参数strNum = 128

TxtRadStr.Text = GenRndString1(128) ' 生成128位随机字符串

测试输出:

CHeBIn0eZARoqINJkfQ37wYwoyOvvnoEH9itL0BXUZlNfJ0SERNERWJF8JUGh0SQGXUm8FY9YonzZIyoKdMMRFpXnt8BNpXXZEbssnGy9fEhTWRvR1193QGJCT0gUXCG

方案三:

PS:这个方案只能生成大写字母和数字的随机字符

Public Function GenRndString2(ByVal RndWidth As Integer) As String
Dim RndNum As Integer
Dim RndChar As String
Dim outRndStr As String = String.Empty
Dim i As Integer = 0

Dim random As System.Random = New Random()

For i = 0 To RndWidth
RndNum = random.Next(255)
If (RndNum Mod 2 = 0) Then
RndChar = Chr(48 + (RndNum Mod 10))
Else
RndChar = Chr(65 + (RndNum Mod 26))
End If

outRndStr += RndChar.ToString()
Next
Return outRndStr
End Function

传入参数strNum = 128

TxtRadStr.Text = GenRndString2(128) ' 生成128位随机字符串

测试输出:

246NRZ2206VJ2LXT868T4884R0B2JV0VB4T8NPX6H2X4P8D22BJ260D46Z4HT462R08HNZ224F2FN4XHBDX4L882PL2N6PJ2J8VP0VFRV42422PT2J2246B22FR4HN6FR

 

方案四:(方案三的修改)

PS:这个方案只能生成小写字母和数字的随机字符

Public Function GenRndString2(ByVal RndWidth As Integer) As String
Dim RndNum As Integer
Dim RndChar As String
Dim outRndStr As String = String.Empty
Dim i As Integer = 0

Dim random As System.Random = New Random()

For i = 0 To RndWidth
RndNum = random.Next(255)
If (RndNum Mod 2 = 0) Then
RndChar = Chr(48 + (RndNum Mod 10))
Else
RndChar = Chr(97 + (RndNum Mod 26))
End If

outRndStr += RndChar.ToString()
Next
Return outRndStr
End Function

传入参数strNum = 128

TxtRadStr.Text = GenRndString2(128) ' 生成128位随机字符串

测试输出:

0624t0pffz008l04dn242244ffrx4p662r6ppdx848286p0hj64f2jx82bp00r024n2f0b0zp8nl0022hfjjn680p88njj84v4b22nh86x64v4h6p4bhd2x2d2l2f86fh

 

上面都是实际测试的结果!



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  随机字符串