2012-07-26 33 views
0

我救了一個非常大的查詢字符串爲MS SQL列中的字符串看起來是這樣的:保存QueryString到MS SQL數據庫現在需要將其轉換爲字符串/數組?

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

我希望能夠做/有這樣的事情在ASP-經典:

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」&我)直到查詢=「」然後我會退出該做。

但是,如果我將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 ? 

回答

2

使用正規式(而不是分體式)和字典(而不是一束標量變量的):

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 

UPDATE II:

使用dicData("s2")獲得芝加哥,伊利諾伊

+0

+1 RegEx子匹配的不錯方法。要完成該值,將需要URI數據解碼。 – AnthonyWJones 2012-07-26 14:55:25

+0

我不斷收到變量是未定義的:'QQ',如果我添加暗淡的QQ然後我得到類型不匹配的錯誤,我在這裏做錯了什麼? – compcobalt 2012-07-26 15:23:05

+0

我不得不改變代碼,我不知道這是否是問題。我會在問題結尾添加代碼,以便您可以查看它。十分感謝你的幫助。 – compcobalt 2012-07-26 15:25:08

1

爲什麼聲明s1s2等?

創建一個變量被用作一個數組,並且通過符號(&)使用上的字符串Split功能,然後當你需要引用一個單獨的行,再次分裂它等號(=) 。

例如:

arMyArray = Split(YourQueryString, "&") 
for i = 0 to uBound(arMyArray) 
    key = Split(arMyArray(i), "=")(0) 
    cityAndState = Split(arMyArray(i), "=")(1) 
next 
+0

arMyArray將0不是基於1爲主。 – AnthonyWJones 2012-07-26 14:58:26

+0

@AnthonyWJones - 你是對的,我的'YourQueryString'的初始版本是從頁面複製過來的,並且有一個領先的&符號,拋棄了我的測試。 – LittleBobbyTables 2012-07-26 15:04:54

+0

嗨感謝您的幫助,但是當我這樣做:Response.write arMyArray(1)我得到s0 = MONEE,IL但我如何獲得只有MONEE,IL顯示而不是S0 = – compcobalt 2012-07-26 15:47:39

相關問題