如何使用C#从类似QueryString的字符串中提取值

本文关键字:字符串 提取 QueryString 何使用 | 更新日期: 2023-09-27 18:00:53

我有一个ASP.NET页面,它的值存储在会话对象中。

我想为一个特定的键提取一个值,但请记住它只是一个字符串。

以下面的字符串为例——从这个字符串中获取"FOOBAR"的最佳方法是什么?正则表达式是最好的方法吗?

有时它可能是这样出现的:

"?facets=All Groups||Brand&TitleTag=FOOBAR#back"

其他时候它可能是这样出现的:

"?facets=All Groups||Brand&TitleTag=FOOBAR"

更新:解决方案

感谢jglouie提出了使用"ParseQueryString"的想法——这最终实现了这个想法。您提供的代码示例是一个良好的开端。以下是我的最终解决方案:

System.Collections.Specialized.NameValueCollection pairs = HttpUtility.ParseQueryString(facetStateOrURL);
string titleTagValue = pairs["TitleTag"];
if (!String.IsNullOrEmpty(titleTagValue) && titleTagValue.IndexOf('#') > -1)
{
    titleTagValue = titleTagValue.Substring(0, titleTagValue.IndexOf('#'));
}

再次感谢您的帮助!

如何使用C#从类似QueryString的字符串中提取值

HttpUtility的ParseQueryString((方法怎么样?

http://msdn.microsoft.com/en-us/library/ms150046.aspx

--

添加Jethro建议的样品:

var string1 = "?facets=All Groups||Brand&TitleTag=FOOBAR#back";
var pairs = HttpUtility.ParseQueryString(string1);
string titleTagValue = pairs["TitleTag"];
if (!string.IsNullOrEmpty(titleTagValue) && titleTagValue.IndexOf('#') > -1)
{
    titleTagValue = titleTagValue.Substring(0, titleTagValue.IndexOf('#'));
}

看起来您正在获取页面请求查询字符串,并在某个时刻将其添加到会话容器中。与其获取整个查询字符串并将其放入seesion,难道你不能只获取所需查询字符串的一部分并将其保存到特定的会话密钥中吗?

例如:

Session["TitleTag"] = Request.QueryString["TitleTag"]

然后你可以在需要的时候引用Session["TitleTag"]。这样你就不必解析字符串,会话中包含的数据更具自我描述性。