在 VBScript 中将字符串转换为变量名
Convert string to variable name in VBScript
如何在 VBscript 中将字符串转换为变量名?我为 JavaScript, C#, Pyton, Perl, Ruby, Java 找到了类似的 Q/A,但对于 VBscript 却没有。
这就是为什么我不能直接使用变量而不是字符串的原因:
有一个逗号分隔的权限列表 names,我从网络服务中获得。项目经理可以随时更新此列表,并希望我检查软件用户是否被授予这些权限。用户的权限是在 运行 时间内通过复杂的方法以及配置文件数据、软件活动历史记录等设置的。如果用户购买了 1000 件产品,变量 SuperCustomerPermission 将在页面的 header 中使用 SuperCustomerPermission="yes"
为他设置(不是作为 cookie 或 session 也不存储在数据库中)。
要检查权限列表,我想将权限列表 names 传递给函数并循环遍历名称:
我从网络服务获得的权限名称:
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)
如果可以将其放入应用程序或会话中,您可以执行类似 session(variableName) = 5
.
的操作
如果没有,下一个最简单的方法是使用字典:
Dim myDict
Set myDict= CreateObject("Scripting.Dictionary")
myDict.Add (variableName, value)
使用字典应该适合您的情况,而且更简洁。
话虽如此,既然您要求 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)
输出:
yes
no
yes
no
如何在 VBscript 中将字符串转换为变量名?我为 JavaScript, C#, Pyton, Perl, Ruby, Java 找到了类似的 Q/A,但对于 VBscript 却没有。
这就是为什么我不能直接使用变量而不是字符串的原因:
有一个逗号分隔的权限列表 names,我从网络服务中获得。项目经理可以随时更新此列表,并希望我检查软件用户是否被授予这些权限。用户的权限是在 运行 时间内通过复杂的方法以及配置文件数据、软件活动历史记录等设置的。如果用户购买了 1000 件产品,变量 SuperCustomerPermission 将在页面的 header 中使用 SuperCustomerPermission="yes"
为他设置(不是作为 cookie 或 session 也不存储在数据库中)。
要检查权限列表,我想将权限列表 names 传递给函数并循环遍历名称:
我从网络服务获得的权限名称:
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)
如果可以将其放入应用程序或会话中,您可以执行类似 session(variableName) = 5
.
如果没有,下一个最简单的方法是使用字典:
Dim myDict
Set myDict= CreateObject("Scripting.Dictionary")
myDict.Add (variableName, value)
使用字典应该适合您的情况,而且更简洁。
话虽如此,既然您要求 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)
输出:
yes
no
yes
no