问题描述
在.NET/C#应用程序开发中有一个URL参数字符串(形如:p1=6&p2=7&p3=8
),如何将这个字符串在不能使用Page.Request
对象的情况下更加简洁地转换成NameValueCollection
对象呢?
方案一
可以使用.NET内置的类:HttpUtility.ParseQueryString
,转换如下:
NameValueCollection qscoll = HttpUtility.ParseQueryString(querystring);
方案二
不依赖类库的自定义实现:
NameValueCollection queryParameters = new NameValueCollection();
string[] querySegments = queryString.Split('&');
foreach(string segment in querySegments)
{
string[] parts = segment.Split('=');
if (parts.Length > 0)
{
string key = parts[0].Trim(new char[] { '?', ' ' });
string val = parts[1].Trim();
queryParameters.Add(key, val);
}
}
方案三
public static NameValueCollection ParseQueryString(string s)
{
NameValueCollection nvc = new NameValueCollection();
if(s.Contains("?"))
{
s = s.Substring(s.IndexOf('?') + 1);
}
foreach (string vp in Regex.Split(s, "&"))
{
string[] singlePair = Regex.Split(vp, "=");
if (singlePair.Length == 2)
{
nvc.Add(singlePair[0], singlePair[1]);
}
else
{
nvc.Add(singlePair[0], string.Empty);
}
}
return nvc;
}
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册