首页 / .NET / 正文

[.NET/C#].NET/C#应用程序开发中如何将一个URL参数字符串转换成NameValueCollection对象?

2921 1 发布于: 2018-11-02 读完约需4分钟

问题描述

在.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;
}

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: [.NET/C#].NET/C#应用程序开发中如何将两个数组合并成一个数组?

下一篇: [.NET/C#].NET/C#应用程序开发中检测网络连接是否可用的方法有哪些,哪种方式最好呢?

本文永久链接码友网 » [.NET/C#].NET/C#应用程序开发中如何将一个URL参数字符串转换成NameValueCollection对象?

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册