我如何判断一个字符串中包含一段字符,如果有类似的字符用正则替换掉没有的话就添加新的
                如intdex.aspx?keyword=123
            是像用正则做这个
                如果没有keyword=123
            如果有用keyword=456替换keyword=123
            我不想用if判断,那正则表达式能实现么

解决方案 »

  1.   

    如果只是lz给的部分
    那就直接替换
    (?<=intdex\.aspx).* 
    替换成 keyword=456
      

  2.   

    string sTemp="被查找的字符串";
    Regex re=new Regex("要查找的字符");
    if(re.IsMatch(sTemp))
    {
       sTemp=sTemp.Replace("要查找的字符","keyword=456") 
    }
    else
    {
         sTemp=sTemp.Replace("要查找的字符","keyword=123") 
    }楼主,这么简单的问题,万万不要用正则表达式,影响效率啊..完全可以用一个IndexOf搞定.
      

  3.   

    我的还有很多条件呢
    不简简单单就这些呢
    intdex.aspx?keyword=123&title=123很多呢
    怎么做呢 
      

  4.   

    private const string REGEX_LEFT = @"(?<left>[\?\&]";
    private const string REGEX_RIGHT = @"=)[^\?\&]*";/// <summary>
    /// url增加参数
    /// </summary>
    /// <param name="urlstr">url</param>
    /// <param name="par">参数名称</param>
    /// <param name="value">参数值</param>
    /// <returns></returns>
            public static string UrlAddPar(string urlstr, string par, string value)
            {
                StringBuilder str = new StringBuilder();
                if (Regex.IsMatch(urlstr, REGEX_LEFT + par + REGEX_RIGHT, RegexOptions.IgnoreCase))
                {
                    str.Append(Regex.Replace(urlstr, REGEX_LEFT + par + REGEX_RIGHT, "${left}" + value, RegexOptions.IgnoreCase));
                }
                else
                {
                    if (urlstr.IndexOf('?') < 0)
                    {
                        str.Append(urlstr);
                        str.Append("?");
                        str.Append(par);
                        str.Append("=");
                        str.Append(value);
                    }
                    else
                    {
                        str.Append(urlstr);
                        str.Append("&");
                        str.Append(par);
                        str.Append("=");
                        str.Append(value);
                    }
                }
                return str.ToString();
            }