【发布时间】:2018-05-21 07:43:05
【问题描述】:
如何在 VBscript 中将字符串转换为变量名?我为JavaScript、C#、Pyton、Perl、Ruby、Java 找到了类似的 Q/A,但不适用于 VBscript。
这就是为什么我不能直接使用变量而不是字符串:
有一个逗号分隔的权限列表 names 我从网络服务获得。项目经理可能会随时更新此列表,并希望我检查软件用户是否被授予这些权限。用户的权限是在运行时通过复杂的方法以及配置文件数据、软件中的活动历史等设置的。如果用户购买了 1000 件产品,变量 SuperCustomerPermission 将使用 SuperCustomerPermission="yes" 在页面标题中为他设置(不是 cookie 或会话,也不是存储在数据库中)。
要检查权限列表,我想将权限列表 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)
【问题讨论】:
-
为什么你认为你需要打电话给
checkPermission("adminPermission")而不是打电话给checkPermission(adminPermission)?那个字符串是从哪里来的?您这样做要解决的实际问题是什么? -
我添加了更多细节,说明为什么我不能使用变量而不是字符串。 @AnsgarWiechers
-
除了
Array函数不会将逗号分隔的字符串转换为数组之外,您还没有解释为什么您认为需要将权限名称字符串更改为同名。请再退后两步,描述您要解决的实际问题,而不是您认为的解决方案。你想用这些权限/变量来完成什么?permissionNames是您的参考资料(您从数据库中获得的信息),还是您想与参考资料进行比较? -
你能像 Jacob M. 建议的那样使用字典吗(例如
permissions("SuperCustomerPermissions") = "yes")?然后你可以简单地循环检查permissions(x) = "yes"。否则你将不得不求助于Eval或Execute,这是不推荐的。 -
不,我不会。抱歉,但我不会帮你打你自己的脚。
标签: vbscript asp-classic type-conversion