0

我已经将一个非常大的 QueryString 保存到 MS SQL 列中,该字符串看起来像这样:

&s1=Toledo,OH&s2=Chicago,IL&s3=Madison,WI.....and so on...

我希望能够在 ASP-Classic 中做/拥有这样的事情:

Dim s1,s2,s3,s4....and son on...

s1="Toledo,OH"
s2="Chicago,IL"
s3="Madison,WI"
.....and son on.....

我希望能够像调用 QueryString 一样调用它们,例如 QueryString 调用将是 Request.QueryString("s1") 或者我可以使用 Do 并循环所有 Request.QueryString("s" & i) 直到查询=“”然后我会退出Do。

但是,如果我将 query.string 保存到 MS DB 列中,我将如何实现这一切?

请帮忙,

谢谢...

我不断收到此错误:变量未定义:'s1',我在这里做错了什么?

    Function qq(s)
      qq = """" & s & """"
    End Function ' qq


    Dim sInp    : sInp        = objRSConnSAVE("QSTRING")
      Dim dicData : Set dicData = Server.CreateObject("Scripting.Dictionary")
      Dim oRE     : Set oRE     = New RegExp
      oRE.Global  = True
      oRE.Pattern = "&([^=]+)=([^&]*)"
      Dim oMTS    : Set oMTS    = oRE.Execute(sInp)
      Dim oMT
      For Each oMT In oMTS
          dicData(oMT.SubMatches(0)) = oMT.SubMatches(1)
      Next

      Dim sKey, sValue
        For Each sKey In dicData.Keys
          sValue = dicData(sKey)
         '''// Response.write qq(sKey) & "=>" & qq(sValue)

      Next

    Response.write "TEST" & s1
   '// I even tried Response.write "TEST" & s(1) same error, how do I call it ?
4

2 回答 2

2

使用 RegExp(而不是 Split)和字典(而不是一堆标量变量):

  Dim sInp    : sInp        = "&s1=Toledo,OH&s2=Chicago,IL&s3=Madison,WI"
  Dim dicData : Set dicData = CreateObject("Scripting.Dictionary")
  Dim oRE     : Set oRE     = New RegExp
  oRE.Global  = True
  oRE.Pattern = "&([^=]+)=([^&]*)"
  Dim oMTS    : Set oMTS    = oRE.Execute(sInp)
  Dim oMT
  For Each oMT In oMTS
      dicData(oMT.SubMatches(0)) = oMT.SubMatches(1)
  Next
  Dim sKey, sValue
  For Each sKey In dicData.Keys
      sValue = dicData(sKey)
      WScript.Echo qq(sKey), "=>", qq(sValue)
  Next

输出:

"s1" => "Toledo,OH"
"s2" => "Chicago,IL"
"s3" => "Madison,WI"

更新:

qq() 是一个双引号字符串的函数:

Function qq(s)
  qq = """" & s & """"
End Function ' qq

更新二:

用于dicData("s2")获得伊利诺伊州芝加哥

于 2012-07-26T14:37:27.153 回答
1

为什么要声明s1,s2等?

创建一个用作数组的变量,并通过与号 ( )Split对字符串使用该函数&,然后当您需要引用单个行时,在等号 ( =) 上再次将其拆分。

例如:

arMyArray = Split(YourQueryString, "&")
for i = 0 to uBound(arMyArray)
    key = Split(arMyArray(i), "=")(0)
    cityAndState = Split(arMyArray(i), "=")(1)
next
于 2012-07-26T14:26:36.790 回答