#region 在URL地址里添加参数
/// <summary>
///  在URL地址里添加参数
/// </summary>
/// <param name="Url">要添加参数的Url</param>
/// <param name="ParamName">参数名称</param>
/// <param name="ParamValue">参数值</param>
/// <returns></returns>
public static string AddParamToUrl(string Url,string ParamName,string ParamValue)
{
string regexstr;
regexstr=string.Format(@"(\?|\&)\s*{0}=\s*(.*)(?=\&|\#)?",ParamName);
if(Regex.IsMatch(Url,regexstr,RegexOptions.IgnoreCase))
{
return Regex.Replace(Url,regexstr,ParamName+"="+ParamValue+"&",RegexOptions.IgnoreCase);
}
regexstr=string.Format(@"(\?|\&)\s*{0}=\s*(.*)$",ParamName);
if(Regex.IsMatch(Url,regexstr,RegexOptions.IgnoreCase))
{
return Regex.Replace(Url,regexstr,ParamName+"="+ParamValue,RegexOptions.IgnoreCase);
}
if(Url.IndexOf("?")>-1)
{
int pos = Url.IndexOf("#");
if(pos<0)
{
return Url+"&"+ParamName+"="+ParamValue;
}
else
{
return Url.Insert(pos,"&"+ParamName+"="+ParamValue);
}
}
return Url+"?"+ParamName+"="+ParamValue;
}
#endregion
上面这方法是为了在一个Url地址里添加一个参数和值,两个正则表达式有误,请指点该怎样写呢?

解决方案 »

  1.   

    正则表达式是为了找出Url里面参数值对,如http://www.csdn.net/aa=1&b=3,正则表达是为了
    根据传递进来的参数 ParamName,进行查找,如paramName=aa,则找出“aa=1”这样的参数值对
      

  2.   

    楼主两个正则表达式好像只是判断URL后面参数啦,而http://www.csdn.net/则没有判断啦
      

  3.   

    对你第一个表达式的理解:
    你想在
    http://www.csdn.net/?aa=1&b=3中找到
    aa = 1然后替换aa的值就是说把aa = 1替换成aa = 2 或者aa = 3等等,但对其他的参数不要有任何影响,如果我的理解是正确的话,你试试这个表达式:
    (?<=(\?|\&))\s*{0}=\s*(.*)(?=(&|#))
    另外要注意的是你传入的URL中的参数必须由?或者&开头
      

  4.   

    (?<=(\?|\&))\s*{0}=\s*(.*)(?=(&|#)?)这个更好一些,因为最后一个参数后面就可能没有&或者#了