using System;using System.Collections.Specialized;using System.Text.RegularExpressions;namespace UrlParse{ /**//// <summary> /// 分析 url 字符串中的参数信息 /// </summary> class Class1 { /**//// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main(string[] args) { string url = "http://www.xxx.com/xyz/hello.asp?a=3&typeId=45&cc=ILoveYou"; NameValueCollection nvc; string baseUrl; ParseUrl(url, out baseUrl, out nvc); // output results Console.WriteLine("baseUrl: {0}", baseUrl); Console.WriteLine("parameters:"); for (int i = 0; i < nvc.Count; i++) Console.WriteLine("{0}, {1}", nvc.Keys[i], nvc[i]); Console.ReadLine(); } /**//// <summary> /// 分析 url 字符串中的参数信息 /// </summary> /// <param name="url">输入的 URL</param> /// <param name="baseUrl">输出 URL 的基础部分</param> /// <param name="nvc">输出分析后得到的 (参数名,参数值) 的集合</param> /// <author>木野狐(Neil Chen)</author> /// <date>2005-06-23</date> static void ParseUrl(string url, out string baseUrl, out NameValueCollection nvc) { if (url == null) throw new ArgumentNullException("url"); nvc = new NameValueCollection(); baseUrl = ""; if (url == "") return; int questionMarkIndex = url.IndexOf('?'); if (questionMarkIndex == -1) { baseUrl = url; return; } baseUrl = url.Substring(0, questionMarkIndex); if (questionMarkIndex == url.Length - 1) return; string ps = url.Substring(questionMarkIndex + 1); // 开始分析参数对 Regex re = new Regex(@"(^|&)?(/w+)=([^&]+)(&|$)?", RegexOptions.Compiled); MatchCollection mc = re.Matches(ps); foreach (Match m in mc) { nvc.Add(m.Result("$2"), m.Result("$3")); } } }}