Vbscript ASP Classic:组织查询。字符串如果为空,则为字符串

Vbscript ASP Classic:组织查询。字符串如果为空,则为字符串,vbscript,asp-classic,Vbscript,Asp Classic,我正在向如下页面发送字符串: 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=,E

我正在向如下页面发送字符串:

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?s0=Chicago,IL&s1=Akron,OH&s2=Des Moines,IA&s3=Miami,FL&s4=Dallas,TX
但在该
“CalMiles_MS.asp”
页面中,我希望删除所有
,清空“
,并重新排序
”&s“+编号”
,因此完成上述示例后如下所示:

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?s0=Chicago,IL&s1=Akron,OH&s2=Des Moines,IA&s3=Miami,FL&s4=Dallas,TX
我该怎么做

请帮忙,谢谢

编辑:

如何对它们进行数字排序并保持顺序不变(城市、州)

我的测试查询输入:

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

为什么不循环查询字符串检查是否为空,然后重新构建字符串

编辑: 我测试了我的代码,参数的顺序是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&s11=,EMPTY&s12=,EMPTY&s13=Des%20分钟,IA&s14=,EMPTY&s15=,EMPTY&s16=,EMPTY&s17=,EMPTY&s18=,EMPTY&s19=,EMPTY&s20=,EMPTY&s21=,EMPTY&s22=迈阿密,佛罗里达&s23=达拉斯,德克萨斯州

输出:

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=Chicago,IL&s1=Akron,OH&s2=Des Moines,IA&s3=Dallas,TX&s4=Miami,FL
为什么不循环查询字符串检查是否为空,然后再次构建字符串

编辑: 我测试了我的代码,参数的顺序是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&s11=,EMPTY&s12=,EMPTY&s13=Des%20分钟,IA&s14=,EMPTY&s15=,EMPTY&s16=,EMPTY&s17=,EMPTY&s18=,EMPTY&s19=,EMPTY&s20=,EMPTY&s21=,EMPTY&s22=迈阿密,佛罗里达&s23=达拉斯,德克萨斯州

输出:

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=芝加哥,伊利诺伊州&s1=阿克伦,俄亥俄州&s2=得梅因,IA&s3=达拉斯,德克萨斯州&s4=迈阿密,佛罗里达州
对于每个,您需要使用数字索引器来访问集合,而不是
。后者保留输入字符串的顺序

<%
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=哥伦布,OH&s1=,EMPTY&s2=,EMPTY&s3=芝加哥,IL&s4=,EMPTY&s5=,EMPTY&s6=,EMPTY&s7=,EMPTY&s8=阿克伦,OH&s9=,EMPTY&s10=,EMPTY&s11=普兰菲尔德,IN&s12=,EMPTY&s13=迈阿密,佛罗里达和s14=,EMPTY&s15=,EMPTY&s16=,EMPTY&s17=,EMPTY&s18=,EMPTY&s19=,EMPTY&s20=,EMPTY&s21=孟菲斯,TN&s22=丹佛,科罗拉多和s23=达拉斯,德克萨斯州达拉斯

输出:

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=哥伦布,俄亥俄州和s1=芝加哥,伊利诺伊州和s2=阿克隆,俄亥俄州和s3=普兰菲尔德,IN&s4=迈阿密,佛罗里达州和s5=孟菲斯,TN&s6=丹佛,科罗拉多州和s7=德克萨斯州达拉斯


对于每个
,您需要使用数字索引器来访问集合,而不是
。后者保留输入字符串的顺序

<%
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=哥伦布,OH&s1=,EMPTY&s2=,EMPTY&s3=芝加哥,IL&s4=,EMPTY&s5=,EMPTY&s6=,EMPTY&s7=,EMPTY&s8=阿克伦,OH&s9=,EMPTY&s10=,EMPTY&s11=普兰菲尔德,IN&s12=,EMPTY&s13=迈阿密,佛罗里达和s14=,EMPTY&s15=,EMPTY&s16=,EMPTY&s17=,EMPTY&s18=,EMPTY&s19=,EMPTY&s20=,EMPTY&s21=孟菲斯,TN&s22=丹佛,科罗拉多和s23=达拉斯,德克萨斯州达拉斯

输出:

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=哥伦布,俄亥俄州和s1=芝加哥,伊利诺伊州和s2=阿克隆,俄亥俄州和s3=普兰菲尔德,IN&s4=迈阿密,佛罗里达州和s5=孟菲斯,TN&s6=丹佛,科罗拉多州和s7=德克萨斯州达拉斯


您需要手动构建查询字符串并发布它,可能只需单击一个按钮。我要问的问题是为什么?让代码隐藏处理缺少的值比生成要发布的字符串更容易。@Westie-Classic ASP没有代码隐藏。@Tim:这取决于如何处理和组织代码。我倾向于将我的经典ASP代码从标记中分离出来,因此“代码隐藏”。我倾向于将文件命名为filename.code.asp,并将其放入名为“codeBehind”的文件夹中。称之为工作偏好。哇+蒂姆在那儿!英雄联盟这表明有些人不相信代码组织。你需要手动构建查询字符串并发布它,也许只需点击一个按钮。我要问的问题是为什么?让代码隐藏处理缺少的值比生成要发布的字符串更容易。@Westie-Classic ASP没有代码隐藏。@Tim:这取决于如何处理和组织代码。我倾向于将我的经典ASP代码从标记中分离出来,因此“代码隐藏”。我倾向于将文件命名为filename.code.asp,并将其放入名为“codeBehind”的文件夹中。称之为工作偏好。哇+蒂姆在那儿!英雄联盟这表明有些人不相信代码组织。谢谢你的帮助。。。我厌倦了你在上面给我写的东西,我不得不改变一些事情,但是周围的事情,我让它工作,但&S的数字是无序的,我如何让他们的阵容(1,2,3,4,5)。。我在我的问题下面写了你修改过的代码。如果你能看一下,看看我做错了什么。谢谢嗨,我测试了我的代码,它按照你想要的方式工作。也许你错过了什么。编辑我的答案以便于测试。只需将它放在test.asp文件中,并使用querystring参数调用它。您好,我在test.asp中复制了您的示例,但输出仍然错误。我更新了我的问题,下面你会看到我得到的输出和它应该是的输出,请你看看,看看我做错了什么。。。再次感谢你所做的一切。谢谢你的帮助。。。我厌倦了你在上面给我写的东西,我不得不改变一些事情,但是周围的事情,我让它工作,但&S的数字是无序的,我如何让他们的阵容(1,2,3,4,5)。。我在我的问题下面写了你修改过的代码。如果你能看一下,看看我做错了什么。谢谢嗨,我测试了我的代码,它按照你想要的方式工作。也许你错过了什么。编辑我的答案以便于测试。只需将它放在test.asp文件中,并使用querystring参数调用它。您好,我在test.asp中复制了您的示例,但输出仍然错误。我更新了我的问题,下面你会看到我得到的输出和它应该是的输出,请你看看,看看我做错了什么。。。再次感谢你所做的一切。