我现在的网页地址里有多个参数,比如address.aspx?Y=2000&T=8888&F=xan&P=tuye,我现在想去掉其中的某个参数比如说F=xan,去掉后是:address.aspx?Y=2000&T=8888&P=tuye,但是这个参数有可能在地址中的任意位置,可能是第一个也可能是最后一个,而且地址里的参数个数也不确定。现在比较痛苦的是“&”总在捣乱,有的时候有,有的时候没有,谢谢大家!!!!

解决方案 »

  1.   


    void Main()
    {
    string url=@"address.aspx?Y=2000&T=8888&F=xan&P=tuye";
     url=Regex.Replace(url,@"T=[^&]*&?",string.Empty);
     Console.WriteLine(url);

    }/*
    address.aspx?Y=2000&F=xan&P=tuye
    */
      

  2.   

    string url = "www.xxx.com?a=1&b=2&c=1";
    string[] s = url.Split('?');
    if(s.Length == 2 && s[1].Length > 0)
    {
       s[1] = "&" + s[1] + "&";
       s[1] = s[1].Replace("&a=1&", "");
       s[1] = s[1].Trim('&');
       if(s[1].Length > 0)
       {
           url = s[0] + "?" + s[1];
       }
    }
      

  3.   

    有可能出现的情况address.aspx?Y=2000&T=8888&F=xan&P=tuye
    address.aspx?F=xan&Y=2000&T=8888&P=tuye
    address.aspx?Y=2000&T=8888&P=tuye&F=xan
    address.aspx?F=xan
    address.aspx?Y=2000&T=8888&P=tuye
    ------------------------------------------address.aspx?Y=2000&T=8888&F=xan&P=tuye=>?Y=2000&T=8888&F=xan&P=tuyeIndexOf &F=   -> == -1 ?       IndexOf ?F= 
                   |
      (IndexOf &F=)  IndexOf &   -> == -1 ?    Substring(IndexOf &F=,(IndexOf &F=)  IndexOf & )
      

  4.   

    &?T=[^&]*&?
    楼上没考参数在最后的情况
      

  5.   

    a=1
    -------
    a= 可以确定,a=后面的不能确定
      

  6.   

    谢谢大家,我用了Regex.Replace(path, @"F=[^&]*&?", string.Empty);但是发现如果是最后一个参数的情况下,替换完了最后有一个“&”没有删掉,
      

  7.   


    void Main()
    {
    string url=@"address.aspx?Y=2000&T=8888";
     url=Regex.Replace(url,@"T=[^&]*&?",string.Empty); Console.WriteLine(url.TrimEnd('&'));

    }
      

  8.   

    按正常逻辑,T=""跟T不存在,对于URL参数判断不影响,所以用
    将Url中key的值替换为空,也能实现效果. /// 将Url中key的值替换为value,如果不存在key则追加
     public static string RegularUrl(string key, string value, string url)
            {
                url += HttpContext.Current.Request.Url.Query;
                int fragPos = url.LastIndexOf("#");
                string fragment = "";
                if (fragPos > -1)
                {
                    fragment = url.Substring(fragPos);
                    url = url.Substring(0, fragPos);
                }
                int querystart = url.IndexOf("?");
                if (querystart < 0)
                {
                    url += "?" + key + "=" + value;
                }
                else if (querystart == url.Length - 1)
                {
                    url += key + "=" + value;
                }
                else
                {
                    Regex Re = new Regex(key + "=[^\\s&#]*", RegexOptions.IgnoreCase);
                    url = (Re.IsMatch(url)) ? Re.Replace(url, key + "=" + value) : url + "&" + key + "=" + value;
                }
                return url + fragment;
            }RegularUrl("Y", "", "address.aspx?Y=2000&T=8888")
      

  9.   

    你直接判断request.querystring["param1"]!=null
    这样判断参数是否存在
    然后根据传过来的值进行相应操作
      

  10.   

    try...string[] urls = new string[] { "address.aspx?Y=2000&T=8888&F=xan&P=tuye", "address.aspx?F=xan&Y=2000&T=8888&P=tuye", "address.aspx?Y=2000&T=8888&P=tuye&F=xan", "address.aspx?F=xan", "address.aspx?Y=2000&T=8888&P=tuye", "address.aspx?Y=2000&T=8888" };
    Regex reg = new Regex(@"(?(&T=[^&]*$)&T=[^&]*$|T=[^&]*&)");
    foreach (string s in urls)
    {
        richTextBox2.Text += "源字符串:" + s.PadRight(50) + "替换结果:" + reg.Replace(s, "") + "\n";
    }
    /*-------输出------
    源字符串:address.aspx?Y=2000&T=8888&F=xan&P=tuye           替换结果:address.aspx?Y=2000&F=xan&P=tuye
    源字符串:address.aspx?F=xan&Y=2000&T=8888&P=tuye           替换结果:address.aspx?F=xan&Y=2000&P=tuye
    源字符串:address.aspx?Y=2000&T=8888&P=tuye&F=xan           替换结果:address.aspx?Y=2000&P=tuye&F=xan
    源字符串:address.aspx?F=xan                                替换结果:address.aspx?F=xan
    源字符串:address.aspx?Y=2000&T=8888&P=tuye                 替换结果:address.aspx?Y=2000&P=tuye
    源字符串:address.aspx?Y=2000&T=8888                        替换结果:address.aspx?Y=2000
    */