2013-12-10 52 views
2

我送一個字符串到一個頁面,看起來像這樣:ASP-經典:組織一個Query.String如果字符串是空

CalMiles_MS.asp?s0=Chicago,IL&s1=Akron,OH&s2=,EMPTY&s3=,EMPTY&s4=,EMPTY&s5=,EMPTY&s6=,EMPTY&s7=,EMPTY&s8=,EMPTY&s9=,EMPTY&s10=,EMPTY&s11=,EMPTY&s12=,EMPTY&s13=Des Moines,IA&s14=,EMPTY&s15=,EMPTY&s16=,EMPTY&s17=,EMPTY&s18=,EMPTY&s19=,EMPTY&s20=,EMPTY&s21=,EMPTY&s22=Miami,FL&s23=Dallas,TX 

但在"CalMiles_MS.asp"頁我想刪除所有的在",EMPTY"和重新排序"&s" + Number(s)所以完成後上面的例子是這樣的:

CalMiles_MS.asp?s0=Chicago,IL&s1=Akron,OH&s2=Des Moines,IA&s3=Miami,FL&s4=Dallas,TX 

我怎麼能這樣做?

請幫忙,謝謝。

編輯:

<% 
Dim key 
Dim qstr 
Dim count: count = 0 

Response.Write "<p>Input:<br />" & Request.Querystring & "</p>" 

for each key in Request.Querystring 
    If Request.Querystring(key) <> ",EMPTY" Then 
     qstr = qstr & "&s" & count & "=" & Request.Querystring(key) 
     count = count + 1 
    End If 
Next 

If qstr <> "" Then 
    qstr = Right(qstr, Len(qstr) - 1) 
End If 

Response.Write "<p>Output:<br />" & qstr & "</p>" 
%> 

但現在的問題是,它不保持在S的以(S#),現在工作得很好,但城市,國家不能正確的順序:

&s1......,.......&s2......,.......&s3......,....... 

如何對它們進行數字排序並保持順序相同(城市,州)?

我的測試查詢輸入:

s0=Columbus,OH&s1=,EMPTY&s2=,EMPTY&s3=Chicago,IL&s4=,EMPTY&s5=,EMPTY&s6=,EMPTY&s7=,EMPTY&s8=Akron,OH&s9=,EMPTY&s10=,EMPTY&s11=Plainfield,IN&s12=,EMPTY&s13=Miami,FL&s14=,EMPTY&s15=,EMPTY&s16=,EMPTY&s17=,EMPTY&s18=,EMPTY&s19=,EMPTY&s20=,EMPTY&s21=Memphis,TN&s22=Denver,CO&s23=Dallas,TX 

輸出:

s0=Columbus,OH&s1=Chicago,IL&s2=Miami,FL&s3=Plainfield,IN&s4=Dallas,TX&s5=Memphis,TN&s6=Akron,OH&s7=Denver,CO 

但輸出應該是:

s0=Columbus,OH&s1=Chicago,IL&s2=Akron,OH&s3=Plainfield,IN&s4=Miami,FL&s5=Memphis,TN&s6=Denver,CO&s7=Dallas,TX 
+0

您需要手動建立查詢字符串,並張貼,也許一個按鈕的點擊。我不得不問的問題是爲什麼?讓你的代碼能夠處理缺失值比構建要發佈的字符串更容易。 – Paul

+2

@Westie - 傳統的ASP沒有代碼。 – Tim

+0

@Tim:這一切取決於你如何處理和組織你的代碼。我傾向於從我的標記中分離出我的經典ASP代碼,因此「代碼隱藏」。我傾向於命名文件* filename * .code.asp並將其放到名爲'codeBehind'的文件夾中。稱它爲工作偏好。 – Paul

回答

2

而不是for each,您需要使用數字索引器來訪問集合。後者保留輸入字符串的順序。

<% 
Dim qstr 
Dim count: count = 0 
Dim x 

Dim value 

for x = 1 To Request.Querystring.Count 
    value = Request.Querystring.Item(x) 

    If value <> ",EMPTY" Then 
     qstr = qstr & "&s" & count & "=" & value 
     count = count + 1 
    End If 
Next 

If qstr <> "" Then 
    qstr = Right(qstr, Len(qstr) - 1) 
End If 

Response.Write "<p>Input:<br />" & Request.Querystring & "</p>" 
Response.Write "<p>Output:<br />" & qstr & "</p>" 
%> 

輸入:

S0 =哥倫布,俄亥俄州& S1 =,EMPTY & S2 =,EMPTY & S3 =芝加哥,IL & S4 =,EMPTY & S5 =,EMPTY & S6 =, EMPTY & S7 =,EMPTY & S8 =俄亥俄州阿克倫& S9 =,EMPTY & S10 =,EMPTY & S11 =普蘭菲爾德,IN & S12 =,EMPTY & S13 =邁阿密,FL &和S14 =,EMPTY & S15 =,EMPTY & S16 =,EMPTY & S17 =,EMPTY & S18 =,EMPTY & S19 =,EMPTY & S20 =,EMPTY & S21 =孟菲斯,田納西& S22 =丹佛,CO & S23 =達拉斯,德克薩斯

輸出:

S0 =哥倫布,俄亥俄州& S1 =芝加哥,IL & S2 =俄亥俄州阿克倫& S3 =普蘭菲爾德,IN &小號4 =邁阿密,佛羅里達& S5 =田納西州孟菲斯& S6 =科羅拉多州丹佛市& S7 =達拉斯,德克薩斯

2

爲什麼空你不循環的查詢字符串檢查然後再次建立字符串?

編輯: 我測試了我的代碼和參數問世有序1,2,3,...

<% 
Dim key 
Dim qstr 
Dim count: count = 0 

Response.Write "<p>Input:<br />" & Request.Querystring & "</p>" 

for each key in Request.Querystring 
    If Request.Querystring(key) <> ",EMPTY" Then 
     qstr = qstr & "&s" & count & "=" & Request.Querystring(key) 
     count = count + 1 
    End If 
Next 

If qstr <> "" Then 
    qstr = Right(qstr, Len(qstr) - 1) 
End If 

Response.Write "<p>Output:<br />" & qstr & "</p>" 
%> 

輸入:

s0=Chicago,IL&s1=Akron,OH&s2=,EMPTY&s3=,EMPTY&s4=,EMPTY&s5=,EMPTY&s6=,EMPTY&s7=,EMPTY&s8=,EMPTY&s9=,EMPTY&s10=,EMPTY&s11=,EMPTY&s12=,EMPTY&s13=Des%20Moines,IA&s14=,EMPTY&s15=,EMPTY&s16=,EMPTY&s17=,EMPTY&s18=,EMPTY&s19=,EMPTY&s20=,EMPTY&s21=,EMPTY&s22=Miami,FL&s23=Dallas,TX

輸出:

s0=Chicago,IL&s1=Akron,OH&s2=Des Moines,IA&s3=Dallas,TX&s4=Miami,FL

+0

謝謝你的幫助......我厭倦了你上面寫給我的東西,我不得不改變一些東西,但是在周圍,我得到了它的工作,但是&S號碼不合格,我如何讓他們成爲陣容(1, 2,3,4,5)..我在你的問題下面寫下你的修改後的代碼。如果你可以看看它和我做了什麼錯誤。謝謝! – msvuze

+0

嗨我測試了我的代碼,它的工作方式是你想要的。可能你錯過了一些東西。編輯我的答案,以便於測試。把它放在一個test.asp文件中,並用你的查詢字符串參數調用它。 – stare

+1

嗨,我複製你的例子在test.asp和輸出仍然是錯誤的。我更新了我的問題,下面你會看到我得到的輸出和輸出結果,請你看看它,看看我做錯了什麼......再次感謝你的一切。 – msvuze

相關問題