首页 > 解决方案 > 在 vbscript 函数中扩展数组

问题描述

我发现以下 VBscript 函数可以使用大写和小写字符生成随机代码。我想将其扩展为包含数字 - 我尝试通过添加额外的几行(max3 和 min3),但不确定如何更改数组以允许新变量。

Function GenerateRandomString(StrLen,upper,lower,numeric)
    Dim charCase
    ' ASCII: Lowercase Alpha Characters
    max=122
    min=97
    ' ASCII: Capital Alpha Characters
    max2=90
    min2=65

    //  THIS BELOW IS WHAT I ADDED:
    ' ASCII: numeric Characters
    max3=57
    min3=49
    // END ADD
    

    For i=0 To (StrLen-1)
        Randomize
        charCase = Array((max-min+1)*Rnd+min,(max2-min2+1)*Rnd+min2)   <!-- Not sure how to change this?
        myStr = myStr & Chr(int(charCase(int(Rnd*2))))
    Next
   
    GenerateRandomString = myStr
End Function   

标签: arraysvbscript

解决方案


该代码创建一个具有 2 个值的数组,然后选择其中一个。最简单的解决方案是向数组添加第三个值:

Randomize
For i=0 To (StrLen-1)
    charCase = Array((max - min + 1) * Rnd + min, _
                     (max2 - min2 + 1) * Rnd + min2, _
                     (max3 - min3 + 1) * Rnd + min3)
    myStr = myStr & Chr(int(charCase(int(Rnd * 3))))
Next

另一种选择是使用您想要的值创建一个字符串并使用它:

letters ="0123456789ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz"
For i=0 To (StrLen-1)
    ' Pick a random letter from the string and add to the result
    myStr = myStr & Mid(letters, int(Rnd * Len(letters)) + 1, 1)
Next

推荐阅读