簡體   English   中英

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

[英]How can I pull a value out of a QueryString-like string with C#

我有一個 ASP.NET 頁面,該頁面的值存儲在 session object 中。

我想為特定鍵提取一個值——但請記住它只是一個字符串。

以下面的字符串為例——從這個字符串中獲取“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('#'));
}

再次感謝您的幫助!

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('#'));
}

看起來您正在獲取頁面請求查詢字符串並將其添加到 session 容器中。 除了獲取整個查詢字符串並將其放入查看中,您難道不能只獲取您需要的查詢字符串部分並將其保存到特定的 session 鍵嗎?

例如:

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

然后您可以在需要時引用 Session["TitleTag"] 。 這樣您就不必解析字符串,並且 session 中包含的數據更具自我描述性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM