mic*_*lle 13 c# string query-string
我正在阅读历史,我希望当我遇到谷歌查询时,我可以提取查询字符串.我没有使用请求或httputility,因为我只是解析一个字符串.但是,当我遇到这样的URL时,我的程序无法正确解析它:
我试图做的是得到q =的索引和&的索引,并取两者之间的单词,但在这种情况下,&的索引将小于q =,它会给我错误.
有什么建议?
谢谢你的答案,一切似乎都很好:) ps我不能使用httputility,不是我不想.当我添加对system.web的引用时,不包括httputility!它只包含在asp.net应用程序中.再次感谢
Ahm*_*eed 21
目前尚不清楚为什么你不想使用HttpUtility.您可以随时添加引用System.Web
并使用它:
var parsedQuery = HttpUtility.ParseQueryString(input);
Console.WriteLine(parsedQuery["q"]);
Run Code Online (Sandbox Code Playgroud)
如果这不是一个选项,那么这种方法可能会有所帮助:
var query = input.Split('&')
.Single(s => s.StartsWith("q="))
.Substring(2);
Console.WriteLine(query);
Run Code Online (Sandbox Code Playgroud)
它会分裂&
并查找以第"q="
2位开始的单个拆分结果,并在=
符号后面返回所有内容.假设是存在单个匹配,这对于这种情况似乎是合理的,否则将抛出异常.如果不是这种情况,则替换Single
为Where
,循环结果并在循环中执行相同的子字符串操作.
编辑:为了涵盖评论中提到的场景,可以使用此更新版本:
int index = input.IndexOf('?');
var query = input.Substring(index + 1)
.Split('&')
.SingleOrDefault(s => s.StartsWith("q="));
if (query != null)
Console.WriteLine(query.Substring(2));
Run Code Online (Sandbox Code Playgroud)
如果您不想使用System.Web.HttpUtility
(因此能够使用客户端配置文件),您仍然可以使用Mono HttpUtility.cs,它只是一个可以嵌入到您的应用程序中的独立.cs文件.然后,您可以简单地使用ParseQueryString
类中的方法来正确解析查询字符串.
小智 5
这是解决方案 -
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;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
33569 次 |
最近记录: |