日期:2014-05-17  浏览次数:20377 次

asp.net 字符串替换
过滤sql关键词

实例:
string str="Shen Zhen Select";
我想替换 Select

1、如果使用 Replace函数 用户输入 select 就替换不了 (不能忽略大小写)
2、如果先转换为大小写在替换,那用户输入的信息就会发生改变 Shen Zhen 变为了 shen zhen 或 SHEN ZHEN

要求:
只替换关键词,不改变用户输入的信息 "Shen Zhen Select" 替换后变为 "Shen Zhen"


请 大虾们 赐教!!!!!!!!!!!!
------解决方案--------------------
  string str = "Shen Zhen Select";
            str = Regex.Replace(str, @"(?i)select", "");
           
------解决方案--------------------
过滤sql关键词,不需要这样处理的.
SqlParameter 本身就有过滤sql关键词及SQL注入式攻击的功能,用这样对象就行了.
string SQLStr;
SqlParameter[] pas ={new SqlParameter("@p0",SqlDbType.VarChar,200),
                      new SqlParameter("@p1",SqlDbType.VarChar,200)};
pas[0].Value="";
pas[1].Value="";
SQLStr = string.Format(@"update df_logon_user set logon_time=getdate(),
                         expire_time=dateadd(n,@p0,getdate()) 
                         where cookie_value=@p1");
SqlHelper.ExcuteNonQuery(SQLStr, pas);
仔细看参数@p0,@p1,是怎样定义并赋值,并且带入SQL语句中的
再看下面的示例:
SqlParameter p = new SqlParameter("@nid",SqlDbType.Int); 
p.Value = nid;
string strsql = "delete zd_news where newid=@nid";
this.ExecSQL(strsql,p);



------解决方案--------------------

[align=left]String curStr = "Shen Zhen Select";
            String temp = curStr.ToLower();
            int index = 0;
            if (temp.Contains("select"))
            {
                index = temp.IndexOf("select");
            }
            curStr = curStr.Substring(0, index);[/align]