• 用 C# 分析 URL 中的参数信息


    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"));
                }
            
            }

        }

    }

  • 相关阅读:
    Ruby单例方法和实例方法
    Silverlight本地化和全球化
    多线程 or 多进程 (转强力推荐)
    循环pthread_create导致虚拟内存上涨
    int在linux上的保存情况
    查看数据流的流程
    查看linux系统版本,内核,CPU,MEM,位数的相关命令(转)
    0/1背包问题
    linux下计算程序运行时间
    夸平台夸字符编码问题
  • 原文地址:https://www.cnblogs.com/RChen/p/179627.html
Copyright © 2020-2023  润新知