0

非常に大きなQueryStringをMSSQL列に保存しましたが、文字列は次のようになります。

&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)をループすることができます。 query = ""の場合、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

(Splitの代わりに)RegExpと(スカラー変数の束の代わりに)辞書を使用します。

  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

更新II:

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 に答える