在经典的Asp中是否可以将值更改为未知变量?

问题描述 投票:0回答:1

不知道标题是否完全符合我需要知道的内容。我在 Stackoverflow(以及互联网)中搜索了答案,但没有成功(也许我找不到它)。
我有一个多年前用经典 ASP (vbscript) 编写的 Web 应用程序。这个应用程序是多语言的,为了尽可能简单地完成事情,我为每种语言编写了一个大的选择案例。因此,我在整个应用程序中使用了近 100 个变量,其中包含英语、意大利语或法语访问者的值。
现在我必须在不知道变量名称的情况下检索和更改具有随机内容的变量(可能只有一个或所有变量)的值。 比如我就有这样的情况

 选择大小写 strLangID
    
    案例“en”
        MENU_PRODUCTS =“我们的产品”
        MENU_DIRECTORY = "目录"
        MENU_WHERE =“我们在哪里”
        MENU_WHO =“关于我们”
    案例“fr”
        MENU_PRODUCTS = "无产品"
        MENU_WHERE = "我们的索姆"
        MENU_WHO = "我们的建议"
        MENU_DIRECTORY = "目录"
    案例“它”
        MENU_PRODUCTS = "我Nostri Prodotti"
        MENU_DIRECTORY = "目录"
        MENU_WHERE =“鸽子西亚莫”
        MENU_WHO =“奇·西亚莫”
    结束选择

我编写了一个小程序来测试是否可以动态更改随机选择的变量的值,但我失败了,所以我问你是否可以,或者是我无法做到:

dim aSiteDescr
dim intRnd
dim newString
dim newValue

' to hold the names of each variable
aSiteDescr = array( "MENU_PRODUCTS", "MENU_DIRECTORY", "MENU_WHERE", "MENU_WHO" )
randomize
intRnd = (int(rnd() * ubound(aSiteDescr)))
newString = aSiteDescr(intRnd)
response.write("newString " & newString & "<br>")
' returns "MENU_PRODUCTS" or correctly another item in aSiteDescr 

' and for example I tried to change the value of the var this way
newValue = Replace(Eval(newString), "Products", "x") 
response.write("newValue " & newValue & "<br>")
' returns "Our x" if newString is "MENU_PRODUCTS", 
  while leaving unchanged the other values corresponding to the other items in 
  aSiteDescr array

现在我想用

newValue
中的新值更新随机选择的原始变量。我已经尝试过
newString = newValue
但是,显然原始变量的值没有改变。请注意,我不知道要使用新值更新的变量的名称,因此我无法写
MENU_ProductS = newValue

在其他语言中,这种宏替换相当简单,我想知道在 vbscript 中是否可以实现
谢谢大家,马可

variables vbscript asp-classic on-the-fly
1个回答
0
投票

“rnd”函数始终生成 0 到 1 之间的随机数,但始终小于 1。因此变量的最终数字永远不会是 3(这是数组中的最后一项)。 要获得您想要的结果,您需要更改以下行:

newValue = Replace(Eval(newString), "Products", "x")

致:

newValue = Replace(newString, "PRODUCTS", "x")

我在这里测试过,效果很好。

© www.soinside.com 2019 - 2024. All rights reserved.