代码之家  ›  专栏  ›  技术社区  ›  Ali Sheikhpour

在VBScript中将字符串转换为变量名

  •  2
  • Ali Sheikhpour  · 技术社区  · 7 年前

    如何在VBscript中将字符串转换为变量名?我发现类似的Q/A JavaScript ,则, C# ,则, Pyton ,则, Perl ,则, Ruby ,则, Java ,但不适用于VBscript。

    这就是为什么我不能直接使用变量而不是字符串的原因:

    有一个逗号分隔的权限列表 名称 这是我从web服务获得的。项目经理可以随时更新此列表,并希望我检查软件用户是否被授予这些权限。用户的权限在运行时通过复杂的方法以及配置文件数据、软件中活动的历史记录等进行设置。例如,如果用户购买了1000种产品,则将使用在页面标题中为其设置变量SuperCustomerPermission SuperCustomerPermission="yes" (不是作为cookie或会话,也不是存储在数据库中)。

    要查看权限列表,我想通过权限列表 名称 到函数并循环遍历名称:

    我从web服务获得的权限名称:

    permissionNames = "adminPermission,deletePermission,configPermission,SuperCustomerPermission"
    

    我尝试将这些字符串作为变量传递给子例程:

    Sub checkPermission(PermissionNames)
        permissionNamesArray = split(permissionNames,",",-1,1)
        For Each x In permissionNamesArray
            'How to convert x to its variable equivalent and check if it equals "yes"
        Next
    End Sub
    
    Call checkPermission(permissionNames)
    
    2 回复  |  直到 7 年前
        1
  •  5
  •   Jacob M.    7 年前

    如果可以将其放入应用程序或会话中,您可以执行以下操作 session(variableName) = 5

    如果没有,下一个最简单的方法是使用字典:

    Dim myDict
    Set myDict= CreateObject("Scripting.Dictionary")
    myDict.Add (variableName, value)
    
        2
  •  1
  •   41686d6564    7 年前

    使用字典应该可以很好地适应你的情况,而且更干净。

    话虽如此,既然你要求 Execute 解决方案,您可以执行以下操作:

    Sub checkPermission(PermissionNames)
        Dim permissionNamesArray, x
    
        permissionNamesArray = split(permissionNames,",",-1,1)
        For Each x In permissionNamesArray
            Dim valueOfX
            Execute "valueOfX = " & x
            WScript.Echo valueOfX
        Next
    End Sub
    

    用法示例:

    ' Adding some values to the variables
    Dim adminPermission, deletePermission, configPermission, SuperCustomerPermission
    adminPermission = "yes"
    deletePermission = "no"
    configPermission = "yes"
    SuperCustomerPermission = "no"
    
    ' Storing names of variables
    Dim permissionNames
    permissionNames = "adminPermission,deletePermission,configPermission,SuperCustomerPermission"
    
    ' Passing variables by names
    checkPermission(permissionNames)
    

    输出:




    推荐文章