2013-12-10 32 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

相关问题