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

.NET 作者: Rector 13阅读 0评论 0收藏 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

在.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#应用程序开发中如何将一个URL参数字符串转换成NameValueCollection对象?

发布于: 2018-11-02 09:54:02
分享扩散: