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

有很多种方案:

方案一:

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

 

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值