zoukankan      html  css  js  c++  java
  • 用 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"));
                }
            
            }

        }

    }

  • 相关阅读:
    Java8 新特性 (七)
    Java8 新特性 (六)Optional 类
    Java8 新特性 (四)方法引用与构造器引用
    使用Postman做接口测试(一)
    使用unittest方法写登录接口,调用cookie
    python的简单实用二(封装/继承/多态)
    学习进度条46
    学习进度条104
    学习进度条103
    学习进度条102
  • 原文地址:https://www.cnblogs.com/RChen/p/179627.html
Copyright © 2011-2022 走看看