C#操作Url参数 url里有key的值,就替换为value,没有的话就追加

作者:网络 来源:佚名 更新时间:2010-11-23 20:35:33 点击:
using System;
using System.Text.RegularExpressions;
using System.Runtime.Remoting.Contexts;
class app
{
    static void Main()
     {
        //生成random
         Random rand = new Random(Environment.TickCount);
        int num = rand.Next(1, 10000);

        /*
        * http://news.sina.com.cn
        * http://news.sina.com.cn?page=1
        * http://news.sina.com.cn?page=1&ts=1341                             &&
        * http://news.sina.com.cn?ts=14321&page=1                         ?&
        * http://news.sina.com.cn?u=2&ts=14321&page=1                         &&
       */
        string url = "http://news.sina.com.cn?u=2&ts=14321&page=1";
        string ParamText = "ts";
        string ParamValue = num.ToString();
         Console.WriteLine(BuildUrl( url,   ParamText,   ParamValue));
         Console.Read();
  
     }
    //url里有key的值,就替换为value,没有的话就追加.
    public static string BuildUrl(string url, string ParamText, string ParamValue)
     {
         Regex reg = new Regex(string.Format("{0}=[^&]*",ParamText),RegexOptions.IgnoreCase);
         Regex reg1 = new Regex("[&]{2,}", RegexOptions.IgnoreCase);
        string _url = reg.Replace(url, "");
        //_url = reg1.Replace(_url, "");
        if (_url.IndexOf("?") == -1)
             _url += string.Format("?{0}={1}",ParamText,ParamValue);//?
        else
             _url += string.Format("&{0}={1}", ParamText, ParamValue);//&
         _url = reg1.Replace(_url, "&");
         _url = _url.Replace("?&", "?");
        return _url;
     }