现在的位置: 首页 > 综合 > 正文

C#对于字符串的处理类(剪裁、过滤危险字符、替换sql中有问题符号等)

2013年10月21日 ⁄ 综合 ⁄ 共 3595字 ⁄ 字号 评论关闭
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Text.RegularExpressions;  
  6.   
  7. namespace BIReportCenter.Utility  
  8. {  
  9.     public class StringHelper  
  10.     {  
  11.         #region String length formatter  
  12.   
  13.         /// <summary>  
  14.         /// 对字符串进行裁剪  
  15.         /// </summary>  
  16.         public static string Trim(string stringTrim, int maxLength)  
  17.         {  
  18.             return Trim(stringTrim, maxLength, "...");  
  19.         }  
  20.   
  21.         /// <summary>  
  22.         /// 对字符串进行裁剪(区分单字节及双字节字符)  
  23.         /// </summary>  
  24.         /// <param name="rawString">需要裁剪的字符串</param>  
  25.         /// <param name="maxLength">裁剪的长度,按双字节计数</param>  
  26.         /// <param name="appendString">如果进行了裁剪需要附加的字符</param>  
  27.         public static string Trim(string rawString, int maxLength, string appendString)  
  28.         {  
  29.             if (string.IsNullOrEmpty(rawString) || rawString.Length <= maxLength)  
  30.             {  
  31.                 return rawString;  
  32.             }  
  33.             else  
  34.             {  
  35.                 int rawStringLength = Encoding.UTF8.GetBytes(rawString).Length;  
  36.                 if (rawStringLength <= maxLength * 2)  
  37.                     return rawString;  
  38.             }  
  39.   
  40.             int appendStringLength = Encoding.UTF8.GetBytes(appendString).Length;  
  41.             StringBuilder checkedStringBuilder = new StringBuilder();  
  42.             int appendedLenth = 0;  
  43.             for (int i = 0; i < rawString.Length; i++)  
  44.             {  
  45.                 char _char = rawString[i];  
  46.                 checkedStringBuilder.Append(_char);  
  47.   
  48.                 appendedLenth += Encoding.Default.GetBytes(new char[] { _char }).Length;  
  49.   
  50.                 if (appendedLenth >= maxLength * 2 - appendStringLength)  
  51.                     break;  
  52.             }  
  53.   
  54.             return checkedStringBuilder.ToString() + appendString;  
  55.         }  
  56.  
  57.  
  58.         #endregion  
  59.  
  60.         #region 特殊字符  
  61.   
  62.         /// <summary>  
  63.         /// 检测是否有Sql危险字符  
  64.         /// </summary>  
  65.         /// <param name="str">要判断字符串</param>  
  66.         /// <returns>判断结果</returns>  
  67.         public static bool IsSafeSqlString(string str)  
  68.         {  
  69.             return !Regex.IsMatch(str, @"[-|;|,|\/|\(|\)|\[|\]|\}|\{|%|@|\*|!|\']");  
  70.         }  
  71.   
  72.         /// <summary>  
  73.         /// 删除SQL注入特殊字符  
  74.         /// 解然 20070622加入对输入参数sql为Null的判断  
  75.         /// </summary>  
  76.         public static string StripSQLInjection(string sql)  
  77.         {  
  78.             if (!string.IsNullOrEmpty(sql))  
  79.             {  
  80.                 //过滤 ' --  
  81.                 string pattern1 = @"(\%27)|(\')|(\-\-)";  
  82.   
  83.                 //防止执行 ' or  
  84.                 string pattern2 = @"((\%27)|(\'))\s*((\%6F)|o|(\%4F))((\%72)|r|(\%52))";  
  85.   
  86.                 //防止执行sql server 内部存储过程或扩展存储过程  
  87.                 string pattern3 = @"\s+exec(\s|\+)+(s|x)p\w+";  
  88.   
  89.                 sql = Regex.Replace(sql, pattern1, string.Empty, RegexOptions.IgnoreCase);  
  90.                 sql = Regex.Replace(sql, pattern2, string.Empty, RegexOptions.IgnoreCase);  
  91.                 sql = Regex.Replace(sql, pattern3, string.Empty, RegexOptions.IgnoreCase);  
  92.             }  
  93.             return sql;  
  94.         }  
  95.   
  96.         public static string SQLSafe(string Parameter)  
  97.         {  
  98.             Parameter = Parameter.ToLower();  
  99.             Parameter = Parameter.Replace("'""");  
  100.             Parameter = Parameter.Replace(">"">");  
  101.             Parameter = Parameter.Replace("<""<");  
  102.             Parameter = Parameter.Replace("\n""<br>");  
  103.             Parameter = Parameter.Replace("\0""·");  
  104.             return Parameter;  
  105.         }  
  106.   
  107.         /// <summary>  

抱歉!评论已关闭.