首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从URL字符串中提取查询字符串

从URL字符串中提取查询字符串
EN

Stack Overflow用户
提问于 2011-05-21 23:21:52
回答 8查看 35.5K关注 0票数 14

我正在阅读历史,我希望当我遇到google查询时,我可以提取查询字符串。我没有使用request或httputility,因为我只是在解析一个字符串。然而,当我遇到这样的URL时,我的程序无法正确地解析它:

http://www.google.com.mt/search?client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&channel=s&hl=mt&source=hp&biw=986&bih=663&q=hotmail&meta=&btnG=Fittex+bil-Google

我试图做的是得到q=的索引和&的索引,然后取中间的单词,但在本例中,&的索引将小于q=,它会给出错误。

有什么建议吗?

谢谢你的回答,看起来一切都很好:)附言。我不能使用httputility,不是我不想用。当我添加对system.web的引用时,when实用程序没有包括在内!它只包含在asp.net应用程序中。再次感谢

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-05-21 23:30:10

现在还不清楚为什么你不想使用HttpUtility。您可以随时添加对System.Web的引用并使用它:

代码语言:javascript
运行
复制
var parsedQuery = HttpUtility.ParseQueryString(input);
Console.WriteLine(parsedQuery["q"]);

如果这不是一种选择,那么这种方法可能会有所帮助:

代码语言:javascript
运行
复制
var query = input.Split('&')
                 .Single(s => s.StartsWith("q="))
                 .Substring(2);
Console.WriteLine(query);

它在&上拆分,并查找以"q="开头的单个拆分结果,并采用位置2处的子字符串返回=符号之后的所有内容。假设只有一个匹配,这对于这种情况似乎是合理的,否则将抛出异常。如果不是这样,那么用Where替换Single,遍历结果并在循环中执行相同的子字符串操作。

EDIT:以涵盖注释中提到的场景此更新版本可以使用:

代码语言:javascript
运行
复制
int index = input.IndexOf('?');
var query = input.Substring(index + 1)
                 .Split('&')
                 .SingleOrDefault(s => s.StartsWith("q="));

if (query != null)
    Console.WriteLine(query.Substring(2));
票数 23
EN

Stack Overflow用户

发布于 2011-05-21 23:25:00

如果您不想使用System.Web.HttpUtility (因此可以使用客户端配置文件),您仍然可以使用Mono HttpUtility.cs,它只是一个可以嵌入到应用程序中的独立.cs文件。然后,您可以简单地在类中使用ParseQueryString方法来正确地解析查询字符串。

票数 6
EN

Stack Overflow用户

发布于 2013-12-10 21:12:43

以下是解决方案-

代码语言:javascript
运行
复制
string GetQueryString(string url, string key)
{
    string query_string = string.Empty;

    var uri = new Uri(url);
    var newQueryString = HttpUtility.ParseQueryString(uri.Query);
    query_string = newQueryString[key].ToString();

    return query_string;
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6082664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档